springmvc Controller使用工具类完成上传图片到阿里云
来源:互联网 发布:田岛绣花软件 编辑:程序博客网 时间:2024/06/16 09:01
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItemIterator; import org.apache.commons.fileupload.FileItemStream; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.util.Streams; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.utils.PictureUploadUtils; //http://blog.csdn.net/llllvvv/article/details/75996964 @Controller public class ImageController { @ResponseBody @RequestMapping(value = "/savepic", method = RequestMethod.POST) public String savePic(HttpServletRequest request) { String token = ""; long UID = -1; String url = ""; String urlAliyun = ""; String key = "";// aliyun的key try { if (ServletFileUpload.isMultipartContent(request)) {//前端必须设置为图片上传类型 DiskFileItemFactory dff = new DiskFileItemFactory(); dff.setSizeThreshold(1024000); ServletFileUpload sfu = new ServletFileUpload(dff); FileItemIterator fii = null; fii = sfu.getItemIterator(request); while (fii.hasNext()) { FileItemStream fis = fii.next(); try { if (!fis.isFormField() && fis.getName().length() > 0) { String fileName = fis.getName(); Pattern reg = Pattern.compile("[.]jpg|png|jpeg|gif|bmp$"); Matcher matcher = reg.matcher(fileName); if (!matcher.find()) { new Exception("图片类型错误"); break; } String tail = fileName.substring(fileName.lastIndexOf("."), fileName.length()); url = "pic" + tail; BufferedInputStream in = new BufferedInputStream(fis.openStream());// 获得文件输入流 FileOutputStream a = new FileOutputStream(new File(url)); BufferedOutputStream output = new BufferedOutputStream(a); Streams.copy(in, output, true);// 开始把文件写到你指定的上传文件夹 FileInputStream inputStream = new FileInputStream(new File(url)); key = "image/" + UID; //图片上传的工具类在上篇文章 urlAliyun = PictureUploadUtils.UploadToAliyun(key, inputStream,tail.substring(1, tail.length())); System.out.println("返回的图片url为: " + urlAliyun); new File(url).delete();// 删除本地文件 } else {//遍历每一参数并取出值(文件上传类型除外) String fname = fis.getFieldName(); if (fname != null && !fname.isEmpty() && fname.equals("token")) { BufferedReader reader = new BufferedReader(new InputStreamReader(fis.openStream())); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } token = sb.toString(); } else { BufferedReader reader = new BufferedReader(new InputStreamReader(fis.openStream())); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } UID = Long.parseLong(sb.toString()); } } } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception ee) { ee.printStackTrace(); } try { // 这里将uid,token,urlAliyun传给业务层保存数据库 // ...... } catch (Exception e) { PictureUploadHelper.deletePicture(key);// 出现异常则删除阿里云上的图片 } return JSON.toJSONString("这里是返回前端的数据"); } }
阅读全文
0 0
- springmvc Controller使用工具类完成上传图片到阿里云
- 上传图片到阿里云
- 上传图片到阿里云并生成url的工具类
- 安卓上传图片到阿里云
- java上传图片到阿里云
- ajaxFileupload上传图片到阿里云
- 图片批量上传到阿里云服务器
- java实现上传图片上传到阿里云
- springMVC使用jersey上传图片到图片服务器
- 压缩图片上传到阿里云(解决图片变红)
- springmvc图片上传到虚拟目录
- 图片上传到服务器(工具类)
- PHP调用接口到阿里云OSS同步上传图片
- [微信小程序]上传图片到阿里云OSS
- 阿里云OSS上传文件工具类
- java 使用SpringMVC上传图片
- iOS 阿里云上传图片
- Java使用阿里云OSS对象存储上传图片
- 【机器学习】交叉验证,K折交叉验证的偏差和方差分析
- JSOI2016 炸弹攻击Attack
- win10,64bit安装Python2.7.12及一些安装包
- Vue.js项目新建及目录结构分析
- Linux下的eval、`与$()
- springmvc Controller使用工具类完成上传图片到阿里云
- keil_5编译C程序时出现“P1 undefined identifier“错误
- 如何让git小乌龟工具记住Git账号密码 免多次登录
- 1003: [ZJOI2006]物流运输 最短路+dp
- Java并发之FairSync和NonfairSync
- 代码 示例 让每个方法尽量粒度小点
- 03-指令ng-bind
- 【git】git一般操作流程
- XRecyclerView的使用