ssm如何实现图片上传,

  ssm如何实现图片上传,

  本文主要详细介绍了Vue SSM上传和预览图片的效果。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  现在的要求是:有一个上传文件按钮。当我们点击按钮时,我们可以选择要上传的文件。确认后,图像将显示在界面上。

  描述:本项目前端使用的Vue,后台用的SSM搭建的,服务器是Tomcat,数据库是MySQL

  

实现思路:

  前端界面:当用户点击上传文件按钮,选择要上传的图片,点击确定后,图片数据就要传到后台了。当后台返回处理后的结果时,前端正在根据响应结果做后续工作。

  后端:后台从前端获取数据时,将图片文件保存在一个固定的文件夹中(这个问题我想了很久,我觉得应该保存在服务器下。本来我是存放在本地文件夹,然后用路径来引导。说实话,真的很蠢。遇到了很多问题,做了很久,傻到自己哭)。文件保存后,返回响应结果。如果成功,直接返回当前图片的相对路径,然后前端按照这个路径显示图片。

  现在要考虑的主要问题是如何把图片资源放到Tomcat下面。

  意识到这个问题,我在Tomcat下创建了一个虚拟目录,以后所有的图片、文件、视频等资源都会放在这个目录文件夹下。

  上传图片的后端步骤如下:

  1. 在Tomcat下创建虚拟目录

  在tomcat的根目录下创建一个名为FileDir的目录(当然这个目录也可以在其他地方建立)。

  在tomcat的conf/server.xml中,配置虚拟目录。添加以下一行

  上下文路径=/FileDir docbase= g:\ installation package \ Tomcat \ installation package \ Tomcat 7.0 \ FileDir /

  将图片1.jpg添加到虚拟目录中,并启动tomcat测试。访问:3358 localhost:8080/filedir/1 . jpg可以请求图片,说明配置成功。

  2. 后端配置

  介绍文件上传和下载jar包:commons-fileupload-1.3.2.jar和commons-io-1.3.2.jar。

  编写SpringMVC配置文件,并添加以下代码:

  !-配置文件上传解析器-

  bean id= multipart resolver class= org . spring framework . web . multipart . commons . commonsmultipartresolver

  !-设置请求编码格式-

  属性名=defaultEncoding 值= UTF-8 /属性

  /bean

  为文件上传创建一个控制器类FileUploadController。

  包com . wyf . controller;

  导入Java . io . file;

  导入Java . util . uuid;

  导入javax . servlet . http . http servlet request;

  导入org . spring framework . beans . factory . annotation . auto wired;

  导入org . spring framework . web . bind . annotation . request mapping;

  导入org . spring framework . web . bind . annotation . request method;

  导入org . spring framework . web . bind . annotation . request param;

  导入org . spring framework . web . bind . annotation . rest controller;

  导入org . spring framework . web . multipart . multipart file;

  导入com . wyf . po . result;

  导入com . wyf . service . file servlet;

  /**

  *文件上传控制器

  *

  * @作者华硕

  *

  */

  @RestController

  公共类FileUploadController {

  @自动连线

  私有文件服务器文件服务器;

  /**

  *执行图像上传。

  *

  *解决前端获取后台数据的中文乱码:productions={ application/JSON;charset=UTF-8}

  */

  @ request mapping(value=/upload img ,method=RequestMethod。POST,produces={ application/JSON;charset=UTF-8 })

  公共结果handleUploadImg(@ request param( file )multipart file文件,HttpServletRequest请求){

  //判断上传的文件是否存在。

  如果(!file.isEmpty()) {

  //获取上传文件的原始名称

  string original filename=file . getoriginal filename();

  //存储图片的路径

  Rootpath= g: \ \安装包\\Tomcat\\安装包\ \ Tomcat 7.0 \ \ FileDir \ \ ;

  //设置上传文件的保存目录。

  string path= \ \ upload \ \ images \ \ apply shop ;

  String dirPath=rootPath路径 \ \ ;

  File filePath=新文件(dirPath);

  //如果保存文件的地址不存在,先创建目录

  如果(!filePath.exists()) {

  file path . mkdirs();

  }

  //重命名

  string new filename=uuid . random uuid() _ original filename;

  尝试{

  //使用MultipartFile接口的方法将文件上传到指定位置。

  file.transferTo(新文件(目录路径新文件名));

  } catch(异常e) {

  e . printstacktrace();

  返回新结果(假,“上传错误”);

  }

  //返回相对路径

  string src path=path \ \ new filename;

  file servlet . adduploadfile(src path);

  返回新结果(true,src path);

  }

  返回新结果(false,“文件不存在”);

  }

  }

  这里用一个Result类返回数据,用来封装返回的结果信息,以JSON格式返回到前端。代码如下:

  公共类结果{

  私有布尔标志;//处理结果ID

  私有字符串消息;//返回的结果信息

  /*省略get()和set()*/

  }

  前端Vue接口,向后台发送请求后,动态绑定src属性,获取获取的图像路径。

  模板

  div class=上传

  div class= img-容器

  !-上传预览图片-

  img :src=src alt /

  /div

  !-文件上传的输入-

  form class= input-file enctype= multipart/form-data method= post

  input type= file ref= upload name= upload img id= file @ change= getFile multiple/

  !-属性的标签A指向输入的唯一id,因此单击标签相当于单击输入-

  Label= file 上传图片/label

  /表单

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  src:要求(././assets/dist/images/admin.jpg ),

  srath: //图片的相对路径

  };

  },

  方法:{

  获取文件(e) {

  let files=e . target . files[0];//获取上传的图片信息

  假设formData=新表单数据()

  formData.append(file ,files)

  这个。$axios.post(/api/uploadImg ,formData)。然后(结果={

  if(result.data.flag){

  this . src path=result . data . message

  this . src=`/imgURL $ { this . src path } ` 1

  }否则{

  console.log(结果.数据.消息)

  }

  })

  }

  }

  };

  /脚本

  通过这一步,基本可以实现图片的上传和预览。但是有一个bug,中文乱码问题。如果图片路径是中文,src无法解析,这个问题我已经解决很久了。

  找了各种百度,最后用了修改tomcat的server.xml配置文件的方法。

  我想了想乱码的原因,因为我的图片资源是通过访问tomcat获得的,所以img标签从后台动态绑定路径时,提交方式是get request。前台获取的路径中文是正确的,但是在tomcat下会出现乱码。tomcat默认的中文编码方式是iso8859-1,而前端设置的编码方式是utf-8,所以出现乱码。

  我的解决方案是修改tomcat的server.xml配置文件

  在tomcat的server.xml中找到

  连接器连接超时=20000 端口=8080 协议=HTTP/1.1 重定向端口=8443/

  将这一行修改为

  !-解决地址栏中文乱码输入问题,在连接器中增加usebodycodingforuri= true uri encoding= utf-8 --

  !- useBodyEncodingForURI=true :这意味着get和post请求以相同的方式编码-

  !-uri encoding= utf-8 :请求编码是utf-8-

  连接器uri encoding= UTF-8 connection time out= 20000 port= 8080 protocol= HTTP/1.1 redirect port= 8443 useBodyEncodingForURI= true /

  这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: