2017-08-10 73 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