2017-08-10 38 views
0

我想暫時將文件上傳到服務器,然後讀取此文件的內容並將內容插入數據庫。但是,當我運行的HTML和上傳文件,它顯示404沒有找到錯誤,沒有上傳。我找不到錯誤在哪裏。 這裏去html代碼數據不是從html傳遞到php

<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 

<body> 

<form method="POST" action="upload.php" enctype="multipart/form-data"> 

    <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 
    <br>File to upload: 
    <br> 
    <input type="file" id="userfile" name="userfile" size="40"> 
    <p> 
     <input id="upload" type="submit" name="upload" value="upload"> 
</form> 
</body> 
</html> 

,並在這裏不用upload.php的

<?php 
require_once('DBconnection.php'); 


ini_set('display_errors', 1); 
ini_set('log_errors', 1); 

if ($db -> connect_error){ 
    die("connection failed ".$db->connect_error); 
} 
else{ 
    echo "connection successful"; 
} 

if(isset($_FILES['upload'])) { 
    if ($_FILES['upload']['error'] == 0) { 

     $fileName = $db->real_escape_string($_FILES['userfile']['name']); 
     $tmpName = $db->real_escape_string($_FILES['userfile']['tmp_name']); 
     $fileSize = intval($_FILES['userfile']['size']); 
     $fileType = $db->real_escape_string($_FILES['userfile']['type']); 

     $fp = fopen($tmpName, 'r'); 
     $content = fread($fp, filesize($tmpName)); 
     $content = addslashes($content); 
     fclose($fp); 

     if (!get_magic_quotes_gpc()) { 
      $fileName = addslashes($fileName); 
     } 


     echo $fileSize; 

     $ins_query = "INSERT INTO upload (filename, filesize, filetype, content) " . 
      "VALUES ('$fileName', '$fileSize', '$fileType', '$content')"; 
     $que = $db->query($ins_query); 

     if ($que == true) 
      echo "<br>File $fileName uploaded<br>"; 
     else 
      echo "Error: " . $ins_query . "<br>" . mysqli_error($db); 
    } 
    else { 
     echo 'Error! A file was not sent!'; 
    } 
} 

?> 
+1

你的文件輸入字段被命名爲'userfile',而不是'upload'(這是按鈕,必須用'_ _POST'來訪問) –

+3

是你的'upload.php'和html文件在同一個目錄下嗎? – coderodour

+0

@MagnusEriksson會導致404錯誤?我認爲這隻會給PHP一個錯誤。其實,即使它不會忽略if語句 – GrumpyCrouton

回答

0

問題是沒有得到確切的目錄位置,我通過添加這個$ targetfolder = getcwd()來解決。 「/ testupload /」;而且我沒有正確接收從HTML中傳入的值。所以在解決這些問題後,我的問題就解決了。

0

404錯誤是一種HTTP錯誤是沒有辦法在upload.php的代碼可以顯示你有這樣的代碼錯誤,檢查當你點擊上傳按鈕,你到達你的upload.php文件的確切url(也許html和php不在同一個目錄中)。

如果文件沒有上傳,你的php腳本的結果將會是「連接成功」而沒有別的,你的錯誤可能是因爲文件DBconnection.php不在同一個目錄upload.php。

+1

如果'require_once'未能加載文件,它不會返回404,因爲你已經說過你自己,是一個HTTP代碼,而不是PHP。 –

+0

我會刪除一些關於dbconnection.php的內容,因爲這不可能是Magnus所說的404錯誤的問題。 – GrumpyCrouton

+0

它們都在同一個目錄中。 404錯誤消失了,但它只顯示連接成功而沒有執行其餘部分 – Israt

0

在我看來,你的上傳失敗了,很可能是由於一些php指令太有限了,比如post_max_size & upload_max_filesize - 看看PHP upload fail (empty $_FILES)。我也會監視php.log,看看是否確實存在這樣的錯誤。

+0

我已經增加了php.ini的大小,但仍然得到同樣的東西。我也找不到任何錯誤,所以我找不到問題所在。 – Israt

+0

難道上傳的文件超過了你放入html文件的MAX_FILE_SIZE設置(它被設置爲大約1MB的限制)? – Eyal

+0

沒辦法。該文件只有18kb。 – Israt