【发布时间】:2016-05-17 17:44:33
【问题描述】:
我收到了与Modify image obtained from loopback-component-storage类似的问题,但答案让我不满意。
使用相同的例子:
在客户端
Upload.upload(
{
url: '/api/containers/container_name/upload',
file: file,
fileName: "demoImage.jpg",
//Additional data with file
params:{
username : username
}
});
这是要求:
- 验证文件的文件类型
- 修改服务器中保存的名称
- 如果文件或用户名无效则拒绝
这是我使用和遇到的一些参考:
用户名是必填项,所以应该是用户的方法。我添加了一个远程方法,就像在https://stackoverflow.com/a/31118294/5241407 中一样,并将 api 更改为 /api/usermodel/:id/upload。在 remoteMethod 中添加了一些代码以将用户名发送到
container.upload函数。我们是否可以在此阶段验证文件类型并更改文件名,以便在无效时返回错误?我在引导文件中使用了 configure-storage.js,就像在 https://stackoverflow.com/a/31059880/5241407 中一样,但是这个解决方案是不够的。如果客户端发送无效的文件类型,服务器将抛出错误,这是意料之外的。最好用错误响应拒绝查询,而不是抛出系统错误。那么如何在不抛出系统级错误的情况下返回错误呢?
有一次我上传了一个png文件并检查了configure-storage.js中的file.type,却发现文件类型是application/octet-stream而不是image/png。这是我用来探测的代码:
curl -X POST --header "Content-Type: multipart/form-data" --header "Accept: application/json" "HOST/api/usermodel/userId/upload" -F "filename=@a.png"这个意想不到的结果可能会妨碍文件类型的判断。
【问题讨论】:
标签: upload storage loopbackjs file-type