我目前正在开发一个用户可以上传音乐的网站。您可以设置要显示的各种类型。现在,问题是有时(不知道为什么)上传对某些文件失败。错误不会显示。它绝对不是权限错误,因为上传适用于大多数文件。 我已经在这里看了很多并试了很多东西,但没有什么对我有用。 这是我的代码:
HTML
<form method="post" action="musicupload.php" enctype="multipart/form-data">
Choose an MP3 or WAV file<file></file>
<br /><br />
<input type="file" name="fileToUpload" id="fileToUpload" required>
<br /><br />
<fieldset>
Genre
<br />
<input type="radio" id="db" name="Genre" value="Dubstep" required checked>
<label for="db"> Dubstep</label>
<input type="radio" id="trap" name="Genre" value="Trap" required>
<label for="trap"> Trap</label>
<input type="radio" id="BB" name="Genre" value="Bass Boosted" required>
<label for="bb"> Bass Boosted</label>
<input type="radio" id="other" name="Genre" value="Other" required>
<label for="other"> Other</label>
</fieldset>
<br />
<input type="submit" value="Upload Song" name="submit">
</form>
PHP
<?php
/**
* Created by IntelliJ IDEA.
* User: Marc
* Date: 04.12.2017
* Time: 20:07
*/
require 'db.php';
$target_dir = "uploadedmusic/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$filename=$_FILES["fileToUpload"]['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$genre = $_POST["Genre"];
$successfull = false;
if(isset($_POST["submit"])) {
// Check extensions
if ($ext != "mp3" && $ext != "wav") {
echo "Sorry, only MP3 & WAV files are allowed.";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$hash = md5_file("uploadedmusic/".$filename);
//echo "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";
$sql = "INSERT INTO `music` (`id`, `filename`, `genre`, `uploaded`, `hash`) VALUES (NULL, '$filename', '$genre', CURRENT_TIMESTAMP, '$hash')";
$conn->query($sql);
$successfull = true;
} else {
$successfull = false;
}
}
}
?>
<html>
<head>
<title>Upload Music</title>
</head>
<body>
<div style="text-align: center;">
<img src="logo.png">
<h1>Please wait...</h1>
<p style="font-size: 35px;">
<?php
if ($successfull == true) {
echo "Successfully uploaded ". basename($_FILES["fileToUpload"]["name"])."! Use the search to find it!";
}
else {
echo "Sorry, there was an error uploading your file. Check for potential invalid characters like () or - in your filename!";
}
?>
</p>
<a style="font-size: 35px" href="main.php">Start listening!</a>
</div>
</body>
</html>
答案 0 :(得分:1)
您需要查看文件上传错误才能找到确切的问题。
echo $_FILES["fileToUpload"]["error"] // this will give you the error code.
可能的错误是。点击此链接http://php.net/manual/en/features.file-upload.errors.php
$phpFileUploadErrors = array(
0 => 'There is no error, the file uploaded with success',
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
3 => 'The uploaded file was only partially uploaded',
4 => 'No file was uploaded',
6 => 'Missing a temporary folder',
7 => 'Failed to write file to disk.',
8 => 'A PHP extension stopped the file upload.',
);
除了检查扩展名之外,您的代码中还需要添加条件来检查上传错误
if ($uploadOk == 0 || $_FILES["fileToUpload"]["error"]!== UPLOAD_ERR_OK) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
}