I希望您能翻译以下内容:我正在开发一个JSON REST网络服务,将被Backbone.js构建的单页面应用程序使用。
该API将允许用户上传与某个实体相关的文件,例如与项目相关的PDF报告。
通过谷歌搜索并在Stack Overflow上进行一些研究,我找到了以下可能的方法:
第一种方法:base64编码数据字段。
作为回应,我将收到一个报告ID,然后我将发出另一个POST请求。
该API将允许用户上传与某个实体相关的文件,例如与项目相关的PDF报告。
通过谷歌搜索并在Stack Overflow上进行一些研究,我找到了以下可能的方法:
第一种方法:base64编码数据字段。
POST: /api/projects/234/reports
{
author: 'xxxx',
abstract: 'xxxx',
filename: 'xxxx',
filesize: 222,
content: '<base64 encoded binary data>'
}
第二种方法:多部分表单提交:
POST: /api/projects/234/reports
{
author: 'xxxx',
abstract: 'xxxx',
}
作为回应,我将收到一个报告ID,然后我将发出另一个POST请求。
POST: /api/projects/234/reports/1/content
enctype=multipart/form-data
然后只需发送二进制数据
(可以参考这个链接: https://dev59.com/C2865IYBdhLWcg3wLrpE#3938816)
第三种方法:将二进制数据发布到单独的资源中并保存href
首先在客户端生成一个随机密钥,然后将二进制内容发布到该位置。
POST: /api/files/E4304205-29B7-48EE-A359-74250E19EFC4
enctype=multipart/form-data
然后
POST: /api/projects/234/reports
{
author: 'xxxx',
abstract: 'xxxx',
filename: 'xxxx',
filesize: 222,
href: '/api/files/E4304205-29B7-48EE-A359-74250E19EFC4'
}
我想知道是否有其他方法可用,每种方法的优缺点以及处理此类需求的任何已建立的方式
我认为第一种方法的最大缺点是,我必须在客户端完全加载和base64编码文件
一些有用的资源: