Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Rails中使用RESTAPI上传视频文件_Android_Ruby On Rails_Json_Video - Fatal编程技术网

Android 如何在Rails中使用RESTAPI上传视频文件

Android 如何在Rails中使用RESTAPI上传视频文件,android,ruby-on-rails,json,video,Android,Ruby On Rails,Json,Video,我想将一个视频文件从IOS/Android客户端上传到RAILS JSON api服务器 我正在从一个只支持rails api的应用程序中尝试这一点。对于图像上传,我使用base64格式对图像进行编码,并将此base64值作为JSON参数传递。但是如果我使用相同的逻辑,那么对于一个大文件(比如10MB或20MB)来说是不实际的 任何帮助都将不胜感激。提前感谢您的帮助。对于正常的JSON-API请求,上载Base64编码的文件实际上是一个有效的选项。您可以使用以下代码大致解码Rails控制器中的字

我想将一个视频文件从IOS/Android客户端上传到RAILS JSON api服务器

我正在从一个只支持rails api的应用程序中尝试这一点。对于图像上传,我使用base64格式对图像进行编码,并将此base64值作为JSON参数传递。但是如果我使用相同的逻辑,那么对于一个大文件(比如10MB或20MB)来说是不实际的


任何帮助都将不胜感激。提前感谢您的帮助。

对于正常的JSON-API请求,上载Base64编码的文件实际上是一个有效的选项。您可以使用以下代码大致解码Rails控制器中的字符串:

def upload_action_method
  file = StringIO.new(Base64.decode(params[:file_data])
end
这种方法的缺点是您已经意识到文件大小增加了约33%。
另一种方法是从IOS或安卓设备执行
多部分/表单数据
POST请求。这样,Rails就可以访问params散列中的File对象,就像普通的文件上传表单一样。您需要手动为本机设备生成有效请求,或使用现有库。我引用了另外两个答案,其中显示了构建多部分请求的代码示例:
安卓系统

IOS

感谢您的回复。我试图实现上述方法。我使用postman传递带有“formdata”请求的参数,但是我得到了一个json解析错误JSON::ParserError at/tasks==========================>822:意外令牌位于------WebKitFormBoundaryA2JDVVVYPSXABIOSK内容处置:表单数据;name=“price”200-----webkitformboundaryajdvvypsxabiosk内容处置:表单数据;name=“pic”;filename=“SampleVideo\u 1280x720\u 1mb.mp4”内容类型:video/mp4“我做了什么,通过邮递员选择了一个视频文件并发送请求。你能帮忙吗?