我想暂时在服务器上传文件,然后读取该文件的内容并将内容插入数据库。但是当我运行html并上传文件时,它显示404找不到错误并且没有上传任何内容。我无法找到错误的位置。 这里是html代码
<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!';
}
}
?>
答案 0 :(得分:0)
404错误是一个http错误,upload.php中的代码无法通过您的代码向您显示此类错误,请检查当您点击上传按钮时是否达到上传的确切网址。 php文件(也许html和php不在同一目录下)。
使用你所拥有的代码,如果文件没有上传,你的php脚本的结果将是“连接成功”而没有别的,也许你的错误是因为文件DBconnection.php不在同一个目录中upload.php的。
答案 1 :(得分:0)
在我看来你的上传失败了,很可能是因为一些php指令太有限了,比如post_max_size&amp; upload_max_filesize - 看看PHP upload fail (empty $_FILES)。我还会监视php.log,看看是否确实存在这样的错误。
答案 2 :(得分:0)
问题是它没有通过添加$ targetfolder = getcwd()获得我解决的确切目录位置。 &#34; / testupload /&#34 ;;而且我没有正确地从HTML接收PHP中传递的值。所以在解决了这些问题之后,我的问题就解决了。