使用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