2013-11-22 128 views
0

我有关于文件上传在PHP的这个问题。 我总是得到这个错误消息。<input type =“file”> EMPTY

警告:file_get_contents()函数:文件名不能在 C是空的:\ XAMPP \ htdocs中\ OMF2 \ emprecords \ add8.php上线25

这是我的第25行

$data = $con->real_escape_string(file_get_contents($_FILES['uploaded_file']['tmp_name'])); 

但仍然保存在我的数据库的信息。

什么,我试图做的是保存记录的其余部分我的数据库,即使不选择要上传的文件。是的记录将被保存,附场(MEDIUMBLOB)表示为[BLOB - 0 B]

问:我怎样才能消除错误/警告信息吗? (因为一切是真的很好)

<meta http-equiv="refresh" content="2;URL='emphistory.php'"> 
    <?php 
    { 
    echo "<center><font color='#AAA' size='3'><br/>Record Added!</center>"; 
    } 
    ?> 
    <?php 
    $con=mysqli_connect("localhost","root","","dbomf"); 
    if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    $result = mysqli_query($con,"SELECT * FROM valueholder"); 
    $row = mysqli_fetch_array($result); 

    $count = ''; 
    $IDNUM = $row['Val']; 
    $NS = addslashes($_POST ['NS']); 
    $ad = addslashes($_POST ['ad']); 
    $hr = addslashes($_POST ['HR']); 
    $name = $con->real_escape_string($_FILES['uploaded_file']['name']); 
    $data = $con->real_escape_string(file_get_contents($_FILES['uploaded_file']['tmp_name'])); 

    include ('../dbconn.php'); 

    $query = "INSERT INTO tblemphist1 VALUES 
    ('".$count."', '".$IDNUM."', '".$NS."', '".$ad."', '".$hr."', '".$data."', '".$name."')"; 

    $result = $db->query($query) or die($db->error); 
    $db->close(); 

这里

<form method="post" action="add8.php" enctype="multipart/form-data"> 
<td><strong>Attachment</strong></td> 
    <td>:</td> 
    <td><input type="file" name="uploaded_file"></td> 
    </tr> 
</form> 
+0

请发表您的输入表单 –

+0

我更新我的帖子,我已经张贴您正在寻找的人吗? – jstn

+0

不,我的意思是HTML格式,expecially的''字段 –

回答

0
<input type = "file"> 

应该

<input name="uploaded_file" type = "file"> 

还形成方法应该是职位和使用的enctype =“的multipart/form-data的

<form action="" method="post" enctype="multipart/form-data"> 
<input name="uploaded_file" type = "file"> 
</form> 

还要检查if语句

$name = ''; $data = ''; 
if ((is_uploaded_file($_FILES['uploaded_file']['tmp_name']) && !($_FILES['uploaded_file']['error'])) { 
    $name = $con->real_escape_string($_FILES['uploaded_file']['name']); 
    $data = $con->real_escape_string(@file_get_contents($_FILES['uploaded_file']['tmp_name'])); 
} 
    include ('../dbconn.php'); 

    $query = "INSERT INTO tblemphist1 VALUES ('".$count."', '".$IDNUM."', '".$NS."', '".$ad."', '".$hr."', '".$data."', '".$name."')"; 

    $result = $db->query($query) or die($db->error); 
+0

生病尝试这一个 – jstn

+0

错误信息消失了。但是,这些记录没有保存 – jstn

+0

尝试用小的图像文件,并检查'的print_r($数据);'可能的file_get_contents不工作 –

0

使用。例如:

if (!empty($_FILES)) { 
    $data = $con->real_escape_string(
     file_get_contents($_FILES['uploaded_file'] ['tmp_name']) 
    ); 
} 
+0

我试过了,仍然有警告。:P – jstn

0

简单的检查,如果变量不是空

$data = ''; 
if (!empty($_FILES['uploaded_file']['tmp_name'])) { 
    $data = $con->real_escape_string(file_get_contents($_FILES['uploaded_file']['tmp_name'])); 
} 
+0

这将允许我保存一切到我的数据库,即使我不选择任何文件? – jstn

+0

我试过这个。仍然显示不能为空 – jstn

+0

什么表明你不能为空?它是数据库错误还是相同的PHP错误? – matewka

0

访问的$_FILES['uploaded_file']你必须检查的价值$_FILES['uploaded_file']['error']任何属性之前。是的,最好检查是否存在这样的密钥 - 就像来自用户的任何内容一样,不能保证它存在于请求中。