Articles of file upload

nginxfile upload与client_body_in_file_only

晚上好,我需要把静态内容上传到nginx服务器1.9(所以上传模块不能用这个版本)。 我读过文章“Nginx直接file upload,而不通过后端”,并按照指示一步一步。 除了nginx数据目录下的文件名之外,一切都适用于我。 文件名称看起来像“0000000001”,“0061565403”等等。 我应该如何保存文件的正确名称? 这是我的nginx位置configuration: location /upload { limit_except POST { deny all; } client_body_temp_path /data/; client_body_in_file_only on; client_body_buffer_size 128K; client_max_body_size 50M; proxy_pass_request_headers on; proxy_set_header content-type "text/html"; proxy_set_body $request_body_file; proxy_pass http://localhost:8080/ proxy_redirect off;}

rails ajaxfile upload和nginx

我正在使用Rails和valums file-uploader进行ajax上传。 在开发中,所有作品都完美无瑕,但是在linode nginx上的制作却打破了一切。 错误日志: [ pid=2097 thr=3065629552 file=ext/nginx/HelperAgent.cpp:584 time=2011-06-23 09:47:06.714 ]: Uncaught exception in PassengerServer client thread: exception: An error occured while sending the request body to the request handler: Broken pipe (32) backtrace: in 'virtual void Passenger::Session::sendBodyBlock(const char*, unsigned int)' (Session.h:198) in 'void Client::sendRequestBody(Passenger::SessionPtr&, Passenger::FileDescriptor&, const std::string&, long unsigned int)' (HelperAgent.cpp:295) in 'void […]

file upload/移动temp不能在nginx上工作

所以,我读了关于move_uploaded_file()问题的这个问题。 但是,在我的apache驱动localhost灯栈,其工作就好了。 所以我认为这可能是一个文件系统/path的事情,而不是代码的事情。 当上传文件到我的网站本地,它的工作原理。 但是当我在QA服务器(这是nginx供电),我得到这个错误: 2012/09/08 15:34:21 [error] 11794#0: *5187 FastCGI sent in stderr: "files not empty PHP Warning: move_uploaded_file(/var/www/qa.mysite.com/mysite/app/files/maps-aprilfools.tiff): failed to open stream: No such file or directory in /var/www/qa.mysite.com/mysite/app/models/files.php on line 516 PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpvdtznP' to '/var/www/qa.mysite.com/mysite/app/files/maps-aprilfools.tiff' in /var/www/qa.mysite.com/mysite/app/models/files.php on line 516" while reading response header from upstream, client: […]

Heroku上传和脚本执行限制

我在Heroku的NGINX(定制buildpack)上使用PHP 5.4.12。 上传1.5MB或更大尺寸的图片时,我遇到了问题。 这就是我正在做的事情: PHP上传到Heroku(使用iFrames和Ajax) 在Heroku上裁剪,resize和遮罩照片(使用Imagick命令行, convert和composite ) 将编辑的图像移动到另一个服务器(因为Heroku不会让你长期存储的东西,除非他们被推到服务器)。 现在我正在使用我的testing环境/服务器,但我相信我最终会将其移到S3上。 任何小文件都可以通过。 任何比几个megs更大的东西只会在上传时间(看起来像)上挂起。 相同的确切脚本在另一台服务器上工作得很好。 我在Heroku上通过php.ini文件修改,重新编译了slu,,重新启动并重置了dynos。 phpinfo()调用显示增加的上传限制,但脚本仍然以相同的方式失败。 我知道Heroku应该有一个30秒的脚本执行限制,但是,我看到它的方式,PHP上传发生在脚本开始执行之前。 我原本是试图从不同的服务器执行上传脚本,但是,因为我正在向上传脚本发出Ajax请求,所以我遇到了CORS(跨源资源共享)限制,而且我不喜欢CORS解决方法有些浏览器不服从。 任何想法,我可以允许用户上传大于1.5MB的图像,在图像上运行我的裁剪/屏蔽脚本,然后在某处存储图像(例如Amazon S3)? 也许有人知道一种方法直接上传到亚马逊,编辑EC2上的图像,然后转移到S3? 谢谢! PS,寻找一个无闪存解决scheme,因为我试图成为移动友好。

多部分表单file upload,Nginx是“吃”,而不是传递给处理程序

我是nginx的新手,但是熟悉低级别的HTTP和apache。 当我尝试进行多部分/表单file upload时,nginx会将一些客户端请求主体写入磁盘,但是永远不会结束,并且永远不会将其传递给向下/上游脚本。 我的具体设置是我有nginx的/ dynredirect到localhost:1337,其中node.js实例正在侦听。 它工作…除了file upload处理程序。 在configuration中还有一个/ debug被redirect到localhost:1338,它转到一个简单的转储服务器。 我将错误日志处理更改为“信息”。 它报告将客户机构存储到一个文件,当我采用这种方式几乎和我想象的一样: –boundary_.oOo._MjM5NzEwOTkxMzU2MjA0NjM5MTQxNDA3MjYwOA== Content-Type: image/jpeg Content-Disposition: form-data; name="file"; filename="dccde7b5-25aa-4bb2-96a6-81e9358f2252.jpg" <binary data, ~89k> 这个文件的问题太短了,当文件是88,963字节时,只有81920字节,应该是88,963 +上面的头部….但是这实际上只是它的一半。 有2个文件(大小相同)即将到来,所以我希望该文件约为160K。 nginx正在做的是重新分配请求的http级别Content-length然后将该标头传递给脚本,这就是它,当然我的脚本抱怨说,它永远找不到–boundary_.oOo._MjM5NzEwOTkxMzU2MjA0NjM5MTQxNDA3MjYwOA==当我做同样的请求我的debugging服务没有nginx中间,它正确地发送数据,如果http Content-length是一个合适的186943字节(这两个文件都在80K左右,所以这是有道理的) 我的nginxconfiguration是默认的,除了我在这里提到的。 编辑:经过一些更多的尝试,客户端主体目录中的所有文件都是81920字节

upload_max_filesize设置为1G时无法上传超过500MB的文件

我意识到这个问题已经有很多了,但是我已经关注了所有这些问题,并且找不到任何有关如何进一步debugging的信息。 我可以上传一个490 MB的文件,绝对没问题。 我无法上传562.8 MB的文件。 我用fpm,nginx 1.11.3,ubuntu 16和Laravel 5.1运行php 7.0.11 我的php ini设置是: upload_max_filesize 1GB post_max_size 1GB memory_limit 1GB(这实际上不需要,但我已经尝试过了) 我的nginx设置: client_max_body_size 1G 我还没有find任何需要改变或可能干扰的其他variables的参考。 当我上传$_FILES看起来像: ["file"]=> array(5) { ["name"]=> string(36) "CSBgGvDIAaZtbC4lmliLevHf0bAnWiKM.rar" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) } 在我的nginx或php错误日志中没有任何东西。 $_SERVER['content_length']是652844444,这是正确的文件长度。 'error'被列为1.我不知道这是否为1,如在相应的错误消息中是1。 php文档在文档中列出1的错误消息: 上传的文件超过了php.ini中的upload_max_filesize指令。 但是两者: echo phpinfo(); echo ini_get('upload_max_filesize'); 显示1GB,所以文件不应该超过它,因为它是562.8 MB。 没有进一步的错误信息,并遵循每一条指令和指导,我可以在谷歌find我完全丧失了它可能是什么。 我也在使用Cloudflare,但是对于这个子域closures了,Cloudflare的限制是100MB而不是500MB,所以我不认为这跟这个有什么关系。 有没有办法进一步debugging呢? […]

会话上传进度是否与nginx和php-fpm一起工作?

我正在运行nginx 1.2.3 / php-fpm 5.4.6并尝试使用会话上传进度function。 在上传过程中, $_SESSION从不包含任何上传数据。 起初,我假设编码错误,但即使是最简单/基本的上传进度testing也没有在$_SESSION产生任何东西。 我现在怀疑这个文件是直接发送给nginx的,这个nginx完全处理了从头到尾的上传,然后nginx把这个上传传递给了php-fpm,所以没有真正的“进度”报告。 我在这个评估中是否正确? 如果是这样,我怎么能解决这个问题? phpconfig确认session.upload设置都设置正确。 下面是当前的testing代码,从这个博客借来的。 <?php /* File upload progress in PHP 5.4 */ /* needs a 5.4+ version */ $version = explode( '.', phpversion() ); if ( ($version[0] * 10000 + $version[1] * 100 + $version[2]) < 50400 ) die( 'PHP 5.4.0 or higher is required' […]

PHPfile upload部分上传错误

我被困在一个关于file upload的问题上。 我试图将JPG,JPEG或PNG图像上传到文件夹。 我正在读一本书,并按照他们的例子,我的代码现在是这样的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Upload an Image</title> <style type="text/css" title="text/css" media="all"> .error { font-weight: bold; color: #C00; } </style> </head> <body> <?php # Script 11.2 – upload_image.php // Check if the form has been submitted: if ($_SERVER['REQUEST_METHOD'] […]

Heroku,H12和passthrough上传超时

概述: 我有一个照相机,把照片发送到我的networking应用程序。 然后我的networking应用程序存储用户数据,并将图片发送到用户的脸谱/粉丝页面。 我的Web应用程序运行Ruby on Rails @ Heroku Cedar堆栈。 stream: 我的web应用程序通过一个POST,从web表单接收照片,就像一个web表单。 展台等待服务器响应。 如果上传失败,则会再次发送图片。 在facebook上传完成之后,webapp的响应才会被触发。 问题: 所有处理完成后,Webapp只会将数据发送给PhotoBooth。 很多时候这会在30秒后发生。 这导致Heroku开火H12 – 超时。 解决scheme? 在上传文件时保持请求存活 (返回一些响应数据,以防止Herku发起H12 – https://devcenter.heroku.com/articles/http-routing#timeouts )。 – 可能吗? 如何在Ruby中实现这一点? 更改为Unicorn + Nginx并激活上传模块(这种方式dyno只在上传完成后才接收到请求 – Unicorn + Rails + Large Uploads )。 真的有可能吗? 使用机架超时gem 。 这会使我的许多上传失败,所以图片永远不会在Facebook上发布,对吧? 改变架构。 使上传直接到S3,旋转工作人员检查新的图片上传到S3桶,下载并发送到Facebook。 – 这可能是最好的,但需要花费很多的时间和精力。 我可能从长远来看,但我现在正在寻找一个快速的解决scheme。 其他…

从浏览器上传文件到另一个域的最好方法是什么?

我正在为一些社交networking创build一个预定职位的networking服务。 在高stream量下需要帮助处理file upload。 过程概述: 用户上传文件到SomeServer(不是我的)。 SomeServer然后用一个JSONstring进行响应。 我的networking应用程序应该存储该JSON响应。 选项1:保存,cURL POST,删除tmp 我做的工作的愚蠢的方式: 用户将file upload到MyWebApp; MyWebApp将文件进一步提交给SomeServer,获取响应。 选项2:JS魔法 聪明的方式可能是完美的: 用户从iFrame内直接将file upload到SomeServer; MyWebApp通过JavaScript获取响应。 但由于“同源政策”,这是(?)不可能的,不是吗? 选项3:nginx代理? 生产服务器的更好的方法是: 用户将file upload到MyWebApp; nginx拦截file upload并直接发送给SomeServer; JSON响应也被nginx拦截,并被MyWebApp处理。 这是否有任何意义,以及将/fileupload位置代理到SomeServer的nginxconfiguration是什么?