[英]PHP and Ajax file upload - Can't get the tmp_name with $_FILES
[英]Why can't I get $_FILES[“file”][“tmp_name”] when uploading a zip file?
这是我第一次来,我想知道您是否可以理解我的问题,因为我不是来自英语国家。
我想编写一些代码来上传文件,如果您知道PHP或JS,我的代码很容易理解。 这是我的代码。
<form action='data.php' method='post' enctype='multipart/form-data'>
<input type='file' name='file' />
<input type='submit' />
</form>
$user_uid = rand(0, 50000);
$file_pos = strpos($_FILES['file']['type'], '/');
$file_name = $user_uid . '.' . substr($_FILES['file']['type'], $file_pos + 1);
$savePath = dirname(__FILE__) . '\\' . $file_name;
copy($_FILES['file']['tmp_name'], $savePath);
如上所述,我想获取文件的tmp_name
,但是如果上传zip文件或7z文件,则该文件不起作用。 但这对于jpg或其他图片似乎效果很好,为什么呢?
我尝试输出7z的$ _FILES ['file'],如下所示:
对象{名称:“ 2.zip”,类型:“”,tmp_name:“”,错误:1,大小:0}
我发现tmp_name是“”,如果7z的话,它的类型也一样,那怎么办? 如果要上传zip或7z,应该如何更改代码?
@ 2017年9月13日
在php.ini中增加它并重新启动服务器
upload_max_filesize = 180M
max_file_uploads = 180
upload_max_filesize = 180M
您可以在php.ini中增加它
upload_max_filesize = 180M
max_file_uploads = 180
upload_max_filesize = 180M
阅读http://php.net/manual/en/features.file-upload.errors.php显示error = 1
为
UPLOAD_ERR_INI_SIZE值:1; 上传的文件超出了php.ini中的upload_max_filesize指令。
因此,提高upload_max_filesize
限制将解决您的问题(这将有助于在PHP上更改upload_max_filesize )
试试这个方法:
if(isset($_FILES["file"])){
$allowed = array('rar','zip' ,'7z', 'RAR', 'ZIP', '7Z');
$filename = $_FILES['file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
echo '0';
} else {
// If no errors, upload the file
$target = "../fisiere_pub/"; //choose your upload folder
move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
$file = $target . $_FILES["file"]["name"];
}
} else $file = "Upload error!";
echo $file;
如果此代码不起作用,请尝试使用小文件(最大5mb)或更改最大文件大小,以供其他用户提到在php.ini中上传:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.