我正在尝试为私有云存储系统创建安全的多文件上传脚本。我不知道我做了什么是好的,因为我在3周前开始学习php。
我在第59行遇到错误:if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir));
而且我不知道我哪里错了。如果有人可以帮助我那么好。
这是我的HTML
<form enctype="multipart/form-data" action="PHP/Click_Upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000000" />
Send this file: <input id="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
这是我的php
<?php
// Folder for upload files
$upload_dir = "../../SeagateHDD/Uploads";
//allowed file extensions
$allowed_types = array(
/* images extensions */
'jpeg', 'bmp', 'png', 'gif', 'tiff', 'jpg',
/* audio extensions */
'mp3', 'wav', 'aac', 'wma', 'm4a',
/* movie extensions */
'mov', 'flv', 'mpeg', 'mpg', 'mp4', 'avi', 'wmv',
/* document extensions */
'txt', 'pdf', 'ppt', 'pps', 'xls', 'doc', 'xlsx', 'pptx', 'ppsx', 'docx'
);
//Mime types not accectped
$mime_type_black_list= array(
/* Audio Mime Types */
'audio/basic', 'audio/L24', 'audio/ogg', 'audio/opus', 'audio/vorbis',
'audio/vnd.rn-realaudio', 'audio/vnd.wave', 'audio/webm', 'audio/example',
/* Images Mime Type */
'image/vnd.djvu', 'image/example',
/* Message Mime Type*/
'message/http', 'message/imdn+xml', 'message/partial', 'message/rfc822',
'message/example',
/* 3D Model Mime Type*/
'model/iges', 'model/mesh', 'model/vrml', 'model/x3d+binary',
'model/x3d+fastinfoset', 'model/x3d-vrml','model/x3d+xml', 'model/example'
);
//checks
if(isset($_FILES['submit'])){
//loop thought all the files
foreach ($_FILES ['submit']['tmp_name'] as $key => $tmp_name) {
$file_name = $_FILES['files']['name'][$key];
$file_size = $_FILES['files']['size'][$key];
$file_type = $_FILES['files']['type'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
//check files are not bigger than 100MB
if ($file_size > 100000000){
echo('File size must be less than 100MB');
}
// convert file name to lowercase and explode the file and look at the extension
$file_ext=strtolower(end(explode('.', $_FILES['file']['name'][$key])));
//check to see if file extension is accpeted
if(in_array($file_ext, $allowed_types)=== false);
echo('File extension not accepted');
//check files with mime types
if(in_array($file_ext, $mime_type_black_list)=== true);
echo('File mime type not accepted')
//move files from temp to choosen directory
if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir));
{
echo ("File Uploaded");
}
else {
echo "Sorry, there was a problem uploading your file.";
}
}
}
<?php
答案 0 :(得分:2)
你在echo('File mime type not accepted')
后第55行丢失了分号。你还在第58行有一个分号,不应该在那里。
您应该删除if语句后的所有分号。
答案 1 :(得分:1)
您在echo('File mime type not accepted')
答案 2 :(得分:0)
;
if
不应该在那里。
if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir));
{
// ...
}
您通常应该使用正确的if用法
if (...)
{
}
不是;
或没有{ }
的内容,即使案例中只有1行。
答案 3 :(得分:0)
您不仅会在第55行丢失分号,还会在第58行添加冗余分号,其中应该有{
答案 4 :(得分:0)
您的问题本身就有解决方案
unexpected 'if' (T_IF), expecting ',' or ';'
意味着您错过了分号。
if(in_array($file_ext, $mime_type_black_list)=== true);
echo('File mime type not accepted');
以及
if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir))
不需要分号。请使用一个好的代码编辑器,它将突出显示这些语法错误。这比发布问题和获得更多投票更好。