我正在验证Carrierwave上传的大小。它在localhost上工作得很好,但在服务器(Amazon EC2)上,当我尝试上传大于1MB的文件(这是限制)时,我收到以下错误:
POST http://mysubdomain.mysite.com/authors/484.js /authors/484.js:1
Unsafe JavaScript attempt to access frame with URL data:text/html,chromewebdata from frame with URL http://mysubdomain.mysite.com/. The frame requesting access has a protocol of 'http', the frame being accessed has a protocol of ''. Protocols must match.
default.js:17
484.js /authors POST (failed) Pending Other 13 B 0 B 1.0 min
data:image/png;base… GET Success image/png data:text/html,chromewebdata:159 Parser 0 B 2.3 KB 0 ms 0 0 ms
在default.js:17行中,发生错误的地方我看到JQuery代码(缩小)
这就是我验证图片的方式:
mount_uploader :image_one, AuthorPixUploader
validates :image_one,
:file_size => {
:maximum => 1.megabytes.to_i
}
有任何帮助吗?我认为它在失败到达服务器之前失败了。我不知道。
答案 0 :(得分:0)
答案是在服务器上的nginx.conf中设置client_max_body_size。
我将此行添加到服务器块:
client_max_body_size 10M;
答案 1 :(得分:0)
我知道你已经找到了问题的解决方案,但我最近有一个类似的问题,并且遇到了关于如何在服务器端正确验证文件大小的官方CarrierWave教程......
https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Validate-attachment-file-size