2013-11-22 172 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']任何屬性之前。是的,最好檢查是否存在這樣的密鑰 - 就像來自用戶的任何內容一樣,不能保證它存在於請求中。