【发布时间】:2017-03-26 20:45:03
【问题描述】:
我正在使用 Rails 5 API 开发一个 Ionic 2 应用程序。我正在尝试将文件从手机上传到服务器。我为此使用了 cordova FileTransfer 插件。来自FileTransferdocs
FileTransfer 对象提供了一种使用 HTTP 上传文件的方法 多部分 POST 或 PUT 请求,以及下载文件。
这是我上传图片的离子代码,
fileUpload(filePath: string,apiEndpoint: string){
this.fileTransfer = new Transfer();
let fileName = filePath.substr(filePath.lastIndexOf('/') + 1);
let options = Object.assign( this.httpHeader(),{chunkedMode: false, fileName: fileName});
return this.fileTransfer.upload(filePath, apiEndpoint, options)
.then((data) => {
return data;
}).catch(this.handleError);
}
它获取文件路径并将其上传到我的 rails 后端。在我有的轨道中,
def update_picture
@user = current_user.update_picture(params[:file])
if @user.save
render_create_success
else
render_create_errorn
end
end
在我的本地机器上的开发和生产环境中一切正常。但是一旦我把它推到 heroku ,它就会抛出一个错误。
Started POST "/v1/update_picture" for
ActionController::BadRequest (Invalid request parameters: invalid %-encoding ("file"; filename="tmp_IMG-20170321-WA0000972448512.jpg"
Content-Type: image/jpeg
����JFIF��C
vendor/bundle/ruby/2.3.0/gems/rack-2.0.1/lib/rack/query_parser.rb:72:in `rescue in parse_nested_query'
如果我是正确的,Content-Type 应该是multipart/form-data,并且当数据是 url 编码时应该会发生此错误。我的项目被困在这个问题上。我想知道,
- 如果没有进行 url 编码,是什么导致了这个错误?
-
我该如何调试呢?当我在本地机器上但在heroku上使用它时没有问题。
编辑
当file upload 中的chunkMode 选项打开时,我在开发中遇到了类似的错误。我将其设置为 false ,错误消失了。如果您想知道更多细节,我会添加它们。任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails cordova heroku ionic-framework