深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 742|回复: 3
打印 上一主题 下一主题

关于PHP的upload-file上传文件

[复制链接]

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
跳转到指定楼层
楼主
发表于 2023-6-3 04:03:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
再利用file-upload上传图片的时候发现,报错在$_FILES["file"]["error"] 中,对应的解释:
  1. $_FILES['file']['error']有以下几种类型:

  2. UPLOAD_ERR_OK = 0
  3. 其值为 0,没有错误发生,文件上传成功。
  4.   
  5. UPLOAD_ERR_INI_SIZE =1
  6. 其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值。
  7.   
  8. UPLOAD_ERR_FORM_SIZE = 2
  9. 其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
  10.   
  11. UPLOAD_ERR_PARTIAL = 3
  12. 其值为 3,文件只有部分被上传。
  13.   
  14. UPLOAD_ERR_NO_FILE = 4
  15. 其值为 4,没有文件被上传。
  16.   
  17. UPLOAD_ERR_NO_TMP_DIR = 6
  18. 其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
  19.   
  20. UPLOAD_ERR_CANT_WRITE = 7
  21. 其值为 7,文件写入失败。PHP 5.1.0 引进。
复制代码






回复

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
沙发
 楼主| 发表于 2023-6-3 04:05:15 | 只看该作者
因为看到错误提示是1:所以首先改了php.ini
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 20M


upload不报错,但上传任然没有文件
回复 支持 反对

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
板凳
 楼主| 发表于 2023-6-3 04:07:36 | 只看该作者
发现目标文件名为空,做了如下修改:
  1.   //fix by syant  20230601   upload_max_filesize = 20M
  2.                 //$path=iconv('UTF-8', 'GBK', $path); //fix by syant
  3.                 $encode = mb_detect_encoding($path, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));
  4.                   if($encode == 'GB2312'){
  5.                         //
  6.                   } else if($encode == 'GBK'){
  7.                         //
  8.                   } else{
  9.                         $path= mb_convert_encoding($path, 'GBK', $encode);
  10.                   }
复制代码


回复 支持 反对

使用道具 举报

800

主题

1379

帖子

7704

积分

版主

Rank: 7Rank: 7Rank: 7

积分
7704
地板
 楼主| 发表于 2023-6-3 04:09:11 | 只看该作者
有目录文件名后, 还是不成功,发现文件名里有问号,
于是做了修改(注意放在最靠近文件复制函数的地方)
  1.   //fix by syant 20230601  
  2.                 for ($i = 0; $i <= 31; ++$i) {
  3.                         $path = str_replace(chr($i), "", $path);
  4.                 }
  5.                 $path = str_replace(chr(63), " ", $path);
  6.                 //
  7.         if(!move_uploaded_file($ex['tmp_name'],$path)){
  8.                         file_put_contents("c:/fileuploaderror.txt",$ex['tmp_name']."\r\n".$path);
  9.                 };  
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-5 03:19 , Processed in 0.027197 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表