使用SSM框架将图片上传到本地服务器


一般的图片上传要满足三要素:①form表单中要有 enctype="multipart/form-data",②必须是post请求,③有一个文件选择域 <input type="file"  />

第一步:使用 tomcat 或者 nginx 作为本地服务器(搭建服务器),

  要是使用tomcat:打开conf/server.xml文件,修改端口防止冲突,比如修改为8081,再加上下面这段配置

     <Context docBase="C:\work\0365\09springmv\\images" path="/images"/>

  解读:1.docBase:图片要上传到电脑的目录地址,   2.path:网络访问路径(虚拟目录,http://127.0.0.1:8081/images/xxx.jpg访问这个地址就能访问到图片了);

  要是使用nginx作为服务器:在nginx文件夹下的html文件夹下新建一个文件夹用来保存上传的图片

  例如目录:C:\\sofware\\nginx-1.16.0\\html\\images,以后访问http://127.0.0.1:80/images/xxx.jpg这个地址就可以访问到图片

 

第二步:导入相应的jar包依赖

第三步:在springmvc.xml配置文件配置:

<!--配置文件上传解析器,
  1.springmvc框架提供了一个文件上传解析器接口(规范):MultipartResolver
  2.需要使用的实现类:CommonsMultipartResolver
  3.文件上传解析器bean的id属性值,必须是文件上传解析器接口名称的首字母小写:multipartResolver -->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="10485760"></property>  <!--配置上传文件的最大大小限制,以字节为单位-->

  <property name="maxInMemorySize" value="4096"></property>  <!--配置内存缓冲区大小,以字节为单位-->

  <property name="defaultEncoding" value="UTF-8"></property>  <!--defaultEncoding:配置字符集编码-->

</bean>

 // 上面的配置上传文件的大小事spring框架的,要是使用nginx服务器,还可以在nginx的配置文件nginx.conf上配置上传图片大小:   client_max_body_size 5m;

第四步:代码开发,业务逻辑

必须要传一个这样类型的参数:MultipartFile file

@service
public class UploadImage{

private static final List ALLOW_IMAGE_TYPE = Arrays.asList("image/jpeg","image/jpg","image/png");
//public static final String IMG_PATH = "E:\\develop\\nginx-1.15.3\\html\\images\\"; nginx服务器

public static final String IMG_PATH = "E:\\springmvc\\images\\";
//public static final String IMG_URL = "http://127.0.0.1/images/"; nginx服务器


public static final String IMG_URL = "http://127.0.0.1:8081/images/";

@RequestMapping("/saveItem.do")
public String localUploadImage(MultipartFile file){

//获取图片的mime类型
String imageMimeType = file.getContentType();
if(!ALLOW_IMAGE_TYPE.contains(imageMimeType)){
      //可以抛自定义异常
}
//解析图片内容
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(file.getInputStream());
} catch (IOException e) {
//可以抛自定义异常
}
if(bufferedImage==null){
      //可以抛自定义异常
}

//得到上传文件的图片名称
String imageName = UUID.randomUUID() + file.getOriginalFilename();

File dest = new File(IMG_PATH + imageName);

try {
file.transferTo(dest); //上传图片的核心代码
} catch (IOException e) {
e.printStackTrace();
}

return IMG_URL+imageName;

}

}

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM