@
limaofeng @
9fan 以这楼主这描述问题的能力想说服领导真的不太现实。
你要说服领导
1 、你要明白他为什么这么想
2 、你得有足够合理的方案能兼容他原有的想法,或者有足够的说服力劝他改变原想法。
至于上传文件必须有业务信息这部分有时候是合理的,比如我参与的有的系统涉及打包导出功能,所以资源文件的存放一开始就是和业务绑定的 比如 '/data/posts/{postid}/images/cover.jpg','/data/post/{postid}/attachments/a.zip' 因为要复制对应目录就可以导出所有有用资源,所以路径中拼接了 相关的业务 id , 因为需要业务 id 自然需要先创建了业务信息。
基于此,如果是我,我会提出这些解决方案,我个人倾向 2 > 1 > 3 > 4 。
1 、能不能先根据 id 生成策略创建一个 业务 id ,进入页面就返回一个 id 给前端, 然后上传文件 和提交业务信息分成两步来,都使用这个 id 。 这样的缺点就是会有冗余废数据,需要额外逻辑去判断和删除,而且原本应该是一个原子性的操作如今拆成几步了可能会有 bug 需要仔细 debug 。
2 、新写一个临时文件上传接口, 提交业务时创建信息,然后再从临时文件那复制文件到之前的上传接口就好,业务信息也有了, 临时文件目录只需要写个定时任务定期清理就好,甚至不清理也没问题,除了占空间和可能会被人当作分享图床外不会有任何副作用。 缺点除了这个临时目录也会冗余外,就是上传接口要调整一下或者新加一个支持从本地复制接口。
3 、一个接口支持多文件上传,写起来很简单,但文件如果大了,需要调整服务器允许上传文件上限,并且会严重占用带宽。
4 、将文件二进制 base64 发送, 除了个别接口只允许上传类似 logo 之类小文件的情况外,一遍不建议这么写。