美文网首页
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