Spring MVC 中文件上传
来源:互联网 发布:运动数据记录器 编辑:程序博客网 时间:2024/05/29 12:48
package com.ss.cms.action;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Locale;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.FilenameUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.multipart.MultipartFile;import com.ss.common.upload.UploadUtils;import com.ss.db..entity.Material;/** * 实现文件上传 * * @author ss */public class CommonUpload {/** * 图片的所有后缀名 * @author ss */public final String[] Image_Suffix = { "BMP", "JPEG", "JPG", "PNG" };/** * 前台画面上传路径 */public final String FRONTFILEPATH = "/upload/front";/** * 后台画面上传路径 */public final String SYSFILEPATH = "/upload/sys";@Autowiredprivate CommonAddWaterMark ssCommonAddWaterMark;@Autowiredprivate CommonCreateThumbnail ssCommonCreateThumbnail;/** * 处理单文件上传方式 调用JeeCsm系统和Spring的文件写出方式 * * @param file * @param ext * @param request * @return */public HashMap<String, String> wenJianShangChuan(MultipartFile file, HttpServletRequest request, String filepath) {HashMap<String, String> rfile = new HashMap<>();if (file.isEmpty()) {return null;}// 获取文件名String origName = file.getOriginalFilename();// 获取文件大小 KBInteger fileSize = (int) file.getSize() / 1024;// 获取扩展名String ext = FilenameUtils.getExtension(origName).toLowerCase(Locale.ENGLISH);// 构建真实路径String filePath1 = request.getSession().getServletContext().getRealPath(filepath);// 动态路径:YYYYMM/DDHHMMSS****String filePath2 = UploadUtils.generateFilename(filePath1, ext);File dest = new File(filePath2);try {UploadUtils.checkDirAndCreate(dest.getParentFile());file.transferTo(dest);if(isImage(dest,ext)) {//添加水印String waterMarkPath = request.getSession().getServletContext().getRealPath("")+ "/r/cms/www/watermark.png";ssCommonAddWaterMark.addWaterMark(filePath2, filePath2, waterMarkPath, 0.8f);//生成缩略图String pathIn = filePath2.replace("/", "\\");String pathOut = pathIn.substring(0, pathIn.lastIndexOf("\\") + 1) + "Thumb_" + pathIn.substring(pathIn.lastIndexOf("\\") + 1);ssCommonCreateThumbnail.createThumbnail(pathIn, pathOut, 240, 180);}rfile.put("fileRealPath", "/" + filePath2.replace(filePath1, filepath.substring(1)));rfile.put("fileName", origName);rfile.put("fileExt", ext);rfile.put("fileSize", fileSize.toString());} catch (IOException e) {System.err.println("CommonUpload:wenJianShangChuan出错啦!" + e.getMessage());}return rfile;}/** * 处理多文件上传方式 注意:form 中file类型名称一致 即 * <code><input type="file" name="files" id="file1"> * <input type="file" name="files" id="file2"> * </code> * @param files * @param request * @param filepath * @return */public ArrayList<HashMap<String, String>> duoWenJianShangChuan(MultipartFile[] files, HttpServletRequest request, String filepath) {if((files == null) || (files.length < 1) ){return null;}ArrayList<HashMap<String, String>> rfiles = new ArrayList<>();HashMap<String, String> rfile;for (MultipartFile file : files) {rfile = new HashMap<>();rfile = wenJianShangChuan(file, request, filepath);if (rfile != null) {rfiles.add(rfile);}}return rfiles;}/** * 判断是否为允许上传的文件类型 * @param inFile:要判断的文件 * @param ext:后缀名 * @return */public boolean isImage(File inFile, String ext){if((inFile == null) || (ext == null) || ext.equals("")){return false;}try {if(ImageIO.read(inFile) != null){for(String e : Image_Suffix) {if(ext.equalsIgnoreCase(e)) {return true;}}}} catch (IOException e) {e.printStackTrace();}return false;}}
0 0
- Spring MVC 中文件上传
- spring中文件上传
- spring mvc中文件下载
- Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题
- Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题
- Spring MVC中文件上传时的异常HttpRequest -> MultipartHttpServletRequest ClassCastException
- Spring MVC 中文件上传/删除 删除空文件夹方法 + 下载方法
- spring中文件上传与下载
- SPRING MVC上传的中文乱码问题
- Spring中文件上传,图片上传以及回显
- MVC和文件上传
- spring mvc 批量下载压缩文件夹中文件
- ASP中文件上传
- struts中文件上传
- jsp中文件上传
- j2me中文件上传
- Rails中文件上传
- struts中文件上传
- 【自己总结的】网页乱码解决方式
- 给小白的Java EE生存指南(5) :AJAX
- 中介者模式
- cf602e New Year Tree dfs序+二进制+线段树区间修改
- 从IAR arm 5.5 IAR ARM 6.30 等低版本升级为高版本 IAR arm 7.4
- Spring MVC 中文件上传
- UVA213----Message Decoding
- SpringMVC+Mybatis框架整合源码SSM Nginx,Hudson
- CodeForces 599D Spongebob and Squares(DP+math)
- gcc编译参数-fPIC的一些问题
- UI组件之Spinner
- 231,NSOperation和NSOperationQueue
- 感觉自己好弱
- ZOJ 1049 题目大意就是路易斯安那每年缩减50 square miles,缩减的是以(0,0)为圆心的半圆,对于任意x,y坐标,输出几年之后被淹没