我正在使用Ionic 2
的{{1}}应用。我正在尝试将文件从手机上传到服务器。我为此用户使用了cordova Rails 5 API
插件。来自FileTransfer
docs
FileTransfer对象提供了一种使用HTTP上传文件的方法 多部分POST或PUT请求,以及下载文件。
这是我上传图片的离子代码,
FileTransfer
它获取文件路径并将其上传到我的rails后端。我有铁轨,
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);
}
在我的本地机器的开发和生产环境中,一切正常。但是一旦我将它推到 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
,并且在数据进行网址编码时会出现此错误。我的项目坚持这个问题。我想知道,
我该如何调试?我在本地机器上使用它时没有问题,但是在heroku上。
修改
当multipart/form-data
中的chunkMode
选项开启时,我在开发过程中遇到了类似的错误。我将其设置为false,错误消失了。如果您想了解更多细节,我会添加它们。任何帮助将不胜感激。
答案 0 :(得分:0)
终于找到了问题。它是cordova FileTransfer
插件1.6.0
中的一个错误。它通过https连接强制chunkedMode。更新到1.6.2
修复了问题。