条带大幅削减文件上传错误

时间:2014-04-19 04:17:03

标签: php

我得到下面给出的代码的以下错误消息 "警告:stripslashes()要求参数1为字符串,在第32行&#34中的/home/stthohuu/public_html/forms/upload_newsletter.php中给出数组;

你可以指导我..我不知道文件上传过程..请分享你的建议

<html>
<head></head>
<body>
<form method="post" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1"
    cellspacing="1" class="box">
<tr>
  <td><h4>Please select a file</h4></td></tr>
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE"
  value="16000000">
<input name="userfile" type="file" id="userfile"> 
</td>
<td width="80"><input name="upload"
  type="submit" class="box" id="upload" value=" Upload "></td>
 </tr>
</table>
</form>
  <a href="newsletter_sec.php">Back</a>
</body>
</html>
<?php
if(isset($_POST['upload'])&&$_FILES['userfile']['size']>0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fileType=(get_magic_quotes_gpc()==0 ? mysql_real_escape_string(
$_FILES['userfile']['type']) : mysql_real_escape_string(
stripslashes ($_FILES['userfile'])));
$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}
$con = mysql_connect('localhost', 'stthohuu_batch', 'abc') or die(mysql_error());
$db = mysql_select_db('stthohuu_church', $con);

/* identify the max id in existing data*/


$max_id[0]='';
$sql="SELECT id FROM newsletter WHERE id=(SELECT max(id) FROM newsletter)";
$result = mysql_query($sql);
$max_id = mysql_fetch_array($result);

if ($max_id[0]=='')
{
  $max_id[0]=0;
}
$id=0;
$id=$max_id[0]+1;  

/* to insert data into newsletter table */

if($db){
$query = "INSERT INTO newsletter (name, size, type, content ) ".
 "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed'); 
mysql_close();
echo "<br>File $fileName uploaded<br>";
}else { echo "file upload failed"; }
} 
 ?>

这在本地xampp工作得很好..但不在网络服务器.. :(

2 个答案:

答案 0 :(得分:1)

您将$_FILES['userfile']数组传递给stripslashes,传递$_FILES['userfile']['name'] or $_FILES['userfile']['tmp_name']

答案 1 :(得分:0)

替换

stripslashes ($_FILES['userfile'])));

stripslashes ($_FILES['userfile']['name'])));

stripslashes是字符串函数,您正在尝试传递文件。