文件上传的插件用的是 dropzone.js ,服务器的处理语音是 php,服务器环境是 centos 7 + apache2 + php 5.6,php 框架用的是 symfony。 在上传大文件时,经过测试 250M 的 zip 文件是可以上传的,280M 的文件就上传失败,在 request 里面,files 为空。 php.ini 里面的 upload_max_filesize 和 post_max_size 都设置成了 2048M. 在 Dropzone.js 里面的 maxFilesize 也设置成了 4048M。 apache 里面,max_execution_time 和 max_input_time 都设置成了 3600.
请教下,还有哪些地方限制了 web 端文件上传的大小?
1
loading 2017-07-08 19:12:01 +08:00 via Android
系统的临时文件所在分区大小。
|
2
Showfom 2017-07-08 20:48:25 +08:00
楼上正解
还有浏览器也有限制,早期的浏览器最多只能传 4GB |
3
zjsxwc 2017-07-08 20:57:23 +08:00 via Android
大文件推荐文件切片断点续传
|
6
MrMike OP @loading
Filesystem Size Used Avail Use% Mounted on /dev/vda1 158G 69G 81G 46% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.4M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 783M 0 783M 0% /run/user/1000 tmp 空间已经足够吧。。 |
7
MrMike OP 是这个服务器:
Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 16G 22G 43% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.3M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 380M 0 380M 0% /run/user/1001 |
8
tadtung 2017-07-08 23:14:55 +08:00
文件上传大小 和你是否用 dropzone.js 没多大关系,,,主要还是 php apache 或者 nginx 的设置。
LimitRequestBody 有修改? 具体看你的错误日志。 正常情况下,,普通的 vps 或者独服 通过 web 上传 2g 以下文件一般都不会出问题的。 |
9
MrMike OP @tadtung 服务器没有报错的记录的。可能跟楼上的朋友说的一样是临时文件大小,但是查了服务器可用空间,都应该足够了的。
|
10
l9rw 2017-07-08 23:39:31 +08:00
|
11
oott123 2017-07-09 00:46:40 +08:00 via Android
Apache 好像有个叫 LimitRequestBody 的配置
|
13
zjsxwc 2017-07-09 05:09:55 +08:00 via Android
|
16
MrMike OP @loading
@Showfom 方便看下么,我的服务器空间从数据上看,应该是足够的了。 Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 16G 22G 43% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.3M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup tmpfs 380M 0 380M 0% /run/user/1001 @zjsxwc @l9rw 换了插件,还是没解决问题,应该跟使用的上传插件无关了。 |
18
newghost 2017-07-09 11:20:10 +08:00
估计是 tomcat 或 nginx 的上传文件大小限制,改下配置就好了
|
19
MrMike OP @zjsxwc 对的。用 firebug 看到的数据:
267.8 mb 的文件: +files: FileBag {#12 #parameters: [] } 133.8 mb 的文件: +files: FileBag {#12 #parameters: array:1 [ "file" => UploadedFile {#13 -test: false -originalName: "Archive 2 copy 2.zip" -mimeType: "application/zip" -size: 140260369 -error: 0 path: "/home/tmp" filename: "phppJbk9d" basename: "phppJbk9d" pathname: "/home/tmp/phppJbk9d" extension: "" realPath: "/home/tmp/phppJbk9d" aTime: 2017-07-09 11:04:05 mTime: 2017-07-09 11:35:41 cTime: 2017-07-09 11:35:41 inode: 1059368 size: 140260369 perms: 0100600 owner: 48 group: 48 type: "file" writable: true readable: true executable: false file: true dir: false link: false } ] } |
20
MrMike OP @newghost 我在 apache 里面添加了 LimitRequestBody 2097152000
重新加载 apache 后,问题还是一样的。 |
21
xuminke 2017-07-10 15:13:36 +08:00
最近也在弄大文件上传,碰到的问题不是文件大小被限制了,而是连接时间过久(因为大文件上传花时间),但是并不会有 timeout 的 error 出来。显先是 java 后端,然后是 nodejs 后端。
开始认为只要有数据传输,应该不存在超时。但是还是超时了。具体是请求没有结束直接 failed 了。服务端没有任何错误 log。java 层不知道如何设置。改用 nodejs 后: http.createServer(app).setTimeout(1300000),就不会自动断开连接了。 希望能给到帮助。 |
22
AJian 2017-07-10 16:04:45 +08:00
有用 nginx 的话 client_max_body_size
|
23
MrMike OP @xuminke 谢谢。我之前一直用 ajax 的方式来上传,将时间修改成了 3600000,还是不行。。刚才直接用表单提交,服务器端居然可以获取到上传的文件数据。我再查一下,是不是 ajax 还有哪些设置没有找到。
|
24
MrMike OP @AJian 是 apache,服务器上的设置修改了的。刚才直接用表单提交,不使用 ajax 方式,文件可以在服务器端获取到。
|
25
AJian 2017-07-10 16:33:49 +08:00
可以把请求代理到 Fiddler4 或者 Charles 抓取请求包分析对比下。
|
26
googlebot 2017-07-10 18:48:41 +08:00 via Android
Apache 的 htaccess,
|
28
Showfom 2017-07-10 21:12:16 +08:00
楼主有没有尝试运维的终极大法?
reboot |
30
googlebot 2017-07-11 09:18:04 +08:00
@MrMike 贴个 htaccess
<Ifmodule mod_php5.c> php_value upload_max_filesize 2M php_value max_execution_time 30 php_value max_input_time 60 php_value memory_limit 32M php_value post_max_size 8M php_flag register_globals off php_flag display_errors off php_flag file_uploads on php_flag log_errors off php_flag output_buffering off php_flag register_argc_argv on php_flag magic_quotes_gpc off php_flag magic_quotes_runtime off php_flag magic_quotes_sybase off php_flag mysql.allow_persistent off php_flag register_long_arrays on php_flag allow_url_fopen on php_flag cgi.force_redirect on php_flag enable_dl on </Ifmodule> |
31
MrMike OP 哎,,,思维定时了。一直在 firefox 下调试,换 google chrome 上就可以工作了。谢谢各位朋友的不吝赐教。结贴。
|
32
MrMike OP 我用的 firefox 版本是 54.0.1 (64-bit) mac,希望此贴对以后遇到类似问题的朋友有所帮助。
|