美文网首页
uni.uploadFile上传图片前后端踩坑

uni.uploadFile上传图片前后端踩坑

作者: 皆非的万事屋 | 来源:发表于2020-01-19 09:25 被阅读0次

        关于前端选择上传图片之一块花了我一下午的时间,先说后端这一块的代码:

        先导入所需的依赖就不说了,之后是在springMVC.xml中配上multipartResolver这个bean,再然后配上上传的大小。这是环境方面的,controller中的上传文件的方法需要有一个重要的参数是

        @RequestParam("file") MultipartFile upload

        这个参数就是你从前端传过来的二进制文件对象,@RequestParam的参数和前端里name属性的值保持一致。

然后通过:

        upload.transferTo(new File(path,filename)),上传。

        filename自定义,但是这个path就有讲究了。因为服务器重启,会把项目中非静态资源下的所有东西清空,所以上传的图片不能放在项目下,要放在其他地方,这时候就需要配置tomcat进行虚拟路径的配置,以后可以直接访问这个地址而不通过项目。(设置时是设置绝对路径,访问时访问虚拟路径)。当然上传的图片也放在这个绝对路径。

        之后就是前端这一块,使用uni.uploadFile方法:(默认POST和multipart/form-data):

        其实问题并不大,只是我当时复制官方测试源码直接使用,把最后的取消上传这一块的代码也复制了,导致每次都上传失败,最后终于解决,一下午的时间也过去了。

        晚上开始写数据的交互,把电影的数据从前端传到后端再写入数据库。其中uni.uploadFile有一个参数是formData,值是一个对象,可以把一些数据传到后端,而后端可以使用request.getParam那个方法获取键值,但都是字符串,显然对象值是数组的就不行了。我尝试使用@requestBody等各种方法都无法封装,最后只能都转化成字符串,到后端再解析了。

        后端解析其实不难,最主要是后端的代码逻辑我考虑了许久,首先是先写数据还是先上传图片,是分批执行,还是放在一个service,不放在一个service里怎么处理异常,其中任何一个发生错误了如何回滚另一个,这是一方面。

        其次是关于代码耦合,这一块主要设计多张表同时操作,所以搜索了关于层与层之间调用的各种建议:

        首先是dao层建议不要互调,service层建议不要互调,service可以调多个dao,或者在service上再加一层facade做成四层,由于我这工程太小完全用不到所以就不考虑。还有就是controller是否可以调多个service,service的某个方法是否可以不调dao只完成一些逻辑处理,每个人的说法都不同。其实这一块都只是减少代码的耦合,方便维护,我现在可能还处理不了那么多。

        一晚上也过去了。

相关文章

网友评论

      本文标题:uni.uploadFile上传图片前后端踩坑

      本文链接:https://www.haomeiwen.com/subject/btfrzctx.html