我是PHP的新手,我正在尝试创建一个页面来上传jpeg文件。网页似乎运行正常,看起来文件正在上传,但文件没有出现在服务器上。你能提供的任何帮助都会很棒。
PHP代码是:
<?php
$target_dir="/var/www/html/";
$fileName=$_FILES['file']['name'];
$target_file=$target_dir . basename($fileName);
$imageFileType=pathinfo($target_file,PATHINFO_EXTENSION);
$fileTempName=$_FILES["file"]["tmp_name"];
$fileType=$_FILES["file"]["type"];
$fileSize=$_FILES["file"]["size"];
$fileError=$_FILES["file"]["error"];
if(($fileType=="image/jpeg")&&($fileSize<100000)){
if($fileError>0){
echo "Return Code: " . $fileError . "<br />";
}
else{
echo "Upload: " .$fileName . "<br />";
echo "Type: " . $fileType . "<br />";
echo "Size: " . ($fileSize / 1024) . " kb<br />";
echo "Temp file: " . $fileTempName . "<br />";
if (file_exists($fileName)){
unlink($fileName);
}
move_uploaded_file($fileTempName,$target_file);
echo "<br><br>File Temp Name: " .$fileTempName."\r\n <br>";
echo "Uploaded file stored as : " .$target_file ."<br><br>";
}
}
else{
echo "File is not a JPEG or too big.";
}
?>
HTML代码如下:
<html>
<body>
<form action="save2web.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"/>
<br/>
<input type="submit" name="submit" value="Upload"/>
</form>
</body>
</html>
答案 0 :(得分:1)
问题在于,您根本不检查move_uploaded_file()
的返回值。但看起来,您在主机上运行脚本,并且由于大多数主机不允许相对路径,因此您最好提供绝对路径。
所以试试,替换:
$target_dir = "/var/www/html/"; // <- This is relative, which might be blocked due to security reasons
与
$target_dir = dirname(__FILE__) . "/var/www/html/"; // dirname(__FILE__) is a path to root
然后,确保文件已上传:
if (!move_uploaded_file(...)) {
// error
}
答案 1 :(得分:0)
像这样更改目标目录。在目录名称前添加。(点)。
$target_directory = './var/www/html';
答案 2 :(得分:0)
假设您的服务器是路径中的linux,您可能需要更改您尝试上传到的文件夹的权限,尝试将文件夹所有者更改为www-data,这为我解决了同样的问题。