一、multipartfile方式
html添加:
<link href="../static/css/plugins/fileinput/fileinput.min.css" rel="stylesheet"> <link href="../static/js/plugins/fancybox/jquery.fancybox.css" rel="stylesheet"> <script src="../static/js/plugins/fileinput/fileinput.min.js"></script> <script src="../static/js/plugins/fileinput/zh.js"></script>
<td> <form class="form-horizontal" enctype="multipart/form-data" method="post" id="uploadForm"> <input id="fileinput" name="file" multiple type="file" class="file-loading"> </form> </td>
js initFileInput("fileinput", "/pic/imageUpload","1",false); //初始化fileinput控件(第一次初始化) var initFileInput = function(ctrlName, uploadUrl,fmax,fpreview) { var control = $('#' + ctrlName); $(document).on('ready', function () { control.fileinput({ language: 'zh', //设置语言 allowedFileExtensions: ['jpg', 'png', 'gif'],//接收的文件后缀 uploadUrl: uploadUrl, //上传的地址 maxFileCount: fmax,//表示允许同时上传的最大文件个数 enctype: 'multipart/form-data',//2进制传输数据 showUpload: true, //是否显示上传按钮 showRemove : false, //显示移除按钮 showCaption: true,//是否显示标题 showPreview: fpreview, //是否显示预览框 uploadAsync: true, //是否异步方式提交 dropZoneEnabled: fpreview,//是否显示拖拽区域 initialPreviewShowDelete:false, initialPreview:[], initialPreviewConfig:[], maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小 elErrorContainer: '#errorBlock' //错误信息显示地方 }); }); }; // 上传成功后处理 $('#fileinput').on('fileuploaded', function(event, data, previewId, index) { //加上传成功后的动作 });
controller
@RequestMapping("/pic/imageUpload") @ResponseBody public String imageUpload(MultipartFile file) { String value = "/images"; String LocalhostUrl=PropertiesFactoryUtil.getProperties("META-INF/config.properties") .getProperty("rootPath"); if(file==null){ LOGGER.error("文件名为空"); Map<String, String> map = new HashMap<>(); map.put("fileName", ""); //System.out.println(map); return JSON.toJSONString(map); } String originalName = null; String UrlName = null; try { if ((file != null && !file.isEmpty())) { originalName = file.getOriginalFilename();// 获得原文件名+扩展名 } Date date = new Date(); // String dateName = new SimpleDateFormat("yyyyMMddHHmmss") // .format(date); String uuid = UUID.randomUUID().toString(); String dateName = new SimpleDateFormat("/yyyy/MM/dd/").format(date); int index = originalName.lastIndexOf("."); String extendName = originalName.substring(index);//获取后缀名 File out = new File(LocalhostUrl + value + dateName + uuid+extendName); out.getParentFile().mkdirs();//创建目录 file.transferTo(new File(LocalhostUrl + value + dateName + uuid+extendName)); // 文件上传(本地絕對路徑+bizecode+时间+uuid) UrlName = dateName + uuid+extendName; } catch (Exception e) { LOGGER.error("上传失败"); e.printStackTrace(); } Map<String, String> map = new HashMap<>(); map.put("fileName", UrlName); //System.out.println(map); return JSON.toJSONString(map); }
二、base64
import org.apache.commons.codec.binary.Base64; import org.springframework.util.Base64Utils; public static String getImageStr(String imgFile) { //imgFile为图片路径 if(StringUtils.isEmpty(imgFile)){ return null; } InputStream in = null; byte[] data = null; // 读取图片字节数组 try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } String encodeToString = Base64Utils.encodeToString(data);// 返回Base64编码过的字节数组字符串 return encodeToString; } // 对字节数组字符串进行Base64解码并生成图片 public static boolean GenerateImage(String imgStr, String imgFilePath) { if (imgStr == null) return false; try { byte[] bytes = Base64.decodeBase64(imgStr); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) bytes[i] += 256; } FileOutputStream out = new FileOutputStream(imgFilePath); out.write(bytes); out.close(); return true; } catch (Exception e) { return false; } }