为什么可以';上传zip文件时,我是否得到$_FILES[“file”][“tmp_name”]


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["文件"],示例如下:

对象{名称:"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中上传的最大文件大小:)

尝试:

move_uploaded_file($_FILES['file']['tmp_name'],$NewPath.$FileName);

这非常有效!

查看:PHP文件上传