【发布时间】:2015-09-23 01:09:03
【问题描述】:
我有一个包含 3 个单独的文件输入字段的表单。在将它们上传到服务器之前,我似乎找不到单独验证它们的 MIME 类型的方法。 (前两个应该只允许 MP3 文件,而最后一个应该只允许 JPEG 文件。)
我该怎么做,或者最好在文件上传后检查 MIME 类型,然后保留它,或者删除它并返回错误消息?
这是我的代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<div class="col-2">
<label>
Full MP3 file
<input type="file" name="file_array[]" id="file_array[]" tabindex="1" required>
</label>
</div>
<div class="col-2">
<label>
Sample MP3 file (30-45 seconds)
<input type="file" name="file_array[]" id="file_array[]" tabindex="2" required>
</label>
</div>
<div class="col-2">
<label>
JPEG Cover Art ( Recommended 400 x 400 px)
<input type="file" name="file_array[]" id="file_array[]" tabindex="3" required>
</label>
</div>
<div class="col-2">
<label>
<progress id="progressBar" value="0" max="100" style="width:100%;"> </progress>
</label>
</div>
<div class="col-submit">
<input type="submit" value="Upload" class="submitbtn" onclick="uploadFile()">
</div>
</form>
这是upload.php
if(isset($_FILES['file_array'])){
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];
for($i = 0; $i < count($tmp_name_array); $i++){
if(move_uploaded_file($tmp_name_array[$i], "../artists/$id/temp/".$name_array[$i])){
echo $name_array[$i]." upload is complete<br>";
} else {
echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
}
}
【问题讨论】:
-
JavaScript 验证充其量也是建议性的。你最好使用
<input type=file accept="image/*">过滤器。如果文件内容是浏览器声称/猜测的内容,您仍然必须在 PHP 中断言。
标签: javascript php arrays validation file-upload