700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JAVA上传文件图片到服务器保存

JAVA上传文件图片到服务器保存

时间:2022-04-30 02:59:16

相关推荐

JAVA上传文件图片到服务器保存

这里我记录一个比较简单方便操作的JAVA上传文件图片到服务器并且保存!

首先是页面 html的 我这是提交一个文件和类型

<div style="border: 1px solid red;">我是添加一张临时图片得到微信的media_id保存数据库!<form action="xxxxxxxxm"enctype="multipart/form-data" method="post"><div style="display: none;"><input type="text" value="IMAGE" name="type"/></div>上传图片:<input type="file" name="file"onchange="previewImage(this, 'prvid')" multiple="multiple"><br /><input type="submit" value="提交" /></form><div id="prvid">预览容器</div></div>

预览图片js

function previewImage(file, prvid) {/* file:file控件 * prvid: 图片预览容器 */var tip = "Expect jpg or png or gif!"; // 设定提示信息 var filters = {"jpeg" : "/9j/4","gif" : "R0lGOD","png" : "iVBORw"}var prvbox = document.getElementById(prvid);prvbox.innerHTML = "";if (window.FileReader) { // html5方案 for (var i = 0, f; f = file.files[i]; i++) {var fr = new FileReader();fr.onload = function(e) {var src = e.target.result;if (!validateImg(src)) {alert(tip)} else {showPrvImg(src);}}fr.readAsDataURL(f);}} else { // 降级处理if (!/\.jpg$|\.png$|\.gif$/i.test(file.value)) {alert(tip);} else {showPrvImg(file.value);}}function validateImg(data) {var pos = data.indexOf(",") + 1;for ( var e in filters) {if (data.indexOf(filters[e]) === pos) {return e;}}return null;}function showPrvImg(src) {var img = document.createElement("img");img.src = src;prvbox.appendChild(img);}}

之后就是后台得到

@RequestMapping(params = "method=addCircle")public String addCircle(HttpServletResponse response,HttpServletRequest request) throws IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String path = request.getSession().getServletContext().getRealPath("/BackstageShoppingWebsite/images/addCircleimage");//保存的服务器地址Map<String, String> map = Upload.upload(request, 1024 * 1024 * 10, path);String file= map.get("file"); // 名称String image = map.get("type"); // 图像String newFile = map.get("newFile");// 地址return null;}

好了现在重点就是看Upload 这个类了 这个类基本是封装好了的,需要 加的东西可以自己取看看然后修改

然后这个类用的是cos.jar包

方法一:

package com.web.weixin.bean;import java.io.File;import java.io.IOException;import java.util.Date;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import com.oreilly.servlet.multipart.FilePart;import com.oreilly.servlet.multipart.MultipartParser;import com.oreilly.servlet.multipart.ParamPart;import com.oreilly.servlet.multipart.Part;public class Upload {public static Map<String, String> upload(HttpServletRequest request,int maxSize, String path) {//以map形式保存数据 key对应保存的是获取界面上的name名称 value保存的是获取界面上的name对应的值Map<String, String> map = new HashMap<String, String>();Part part = null;try {MultipartParser mrequest = new MultipartParser(request, maxSize);mrequest.setEncoding("utf-8");//遍历所有的part组while ((part = mrequest.readNextPart()) != null) {if (part.isFile()) { //判断是否是文件FilePart filepart = (FilePart) part;//转化成文件组String fileName = filepart.getFileName();//得到文件名if (fileName != null && fileName.length() > 0) {// 取得扩展名String fileExtName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();// 只上传图片 //判断图片上传的格式是否符合 后缀名是否有效if (fileExtName.equalsIgnoreCase("jpeg")|| fileExtName.equalsIgnoreCase("png")||fileExtName.equalsIgnoreCase("jpg")|| fileExtName.equalsIgnoreCase("gif")|| fileExtName.equalsIgnoreCase("ico")|| fileExtName.equalsIgnoreCase("bmp")|| fileExtName.equalsIgnoreCase("flv")|| fileExtName.equalsIgnoreCase("mp4")|| fileExtName.equalsIgnoreCase("mp3")) {/*String newFileName = new Date().getTime() + "."+ fileExtName;//重新改文件名 文件名+扩展名 */ String newFileName =new Date().getTime() +fileName;//不改图片名字String newPath = path + "/" + newFileName; //文件处理文件上传的路径File newFile = new File(newPath);filepart.writeTo(newFile); //将文件真正写入到对应的文件夹中//filepart.getName() 得到 request 要接收的参数的名字map.put(filepart.getName(), newFileName);//把文件信息保存到map中map.put("newFile", newFile.toString());} else {map.put("geshi", "geshi");continue;}// 说明上传的不是图片} else {map.put("yes","yes");continue; // 说明没有选择上传图片}} else if (part.isParam()) { //判断是否是参数ParamPart paramPart = (ParamPart) part;map.put(paramPart.getName(), paramPart.getStringValue());}}} catch (IOException e) {e.printStackTrace();}return map;}}

方法二: 这个是 别人写的 我这也写到这里 因为写的很好 我就记录一下 也方便大家使用

@RequestMapping(params = "method=addCircle")public String addCircle(HttpServletResponse response,HttpServletRequest request) throws IOException {String urls =Var.webConfigMap.get("WXLinkUrl")+"/upload/pjimages";Map<String, Object> paramMap= Upload.doGet(request,response,urls);String file= (String)map.get("file"); // 名称String image = (String)map.get("type"); // 图像String newFile = (String)map.get("newFile");// 地址return null;}

package com.web.wxutils;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.fileupload.FileItem;import mons.fileupload.FileUploadBase;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import com.oreilly.servlet.multipart.FilePart;import com.oreilly.servlet.multipart.MultipartParser;import com.oreilly.servlet.multipart.ParamPart;import com.oreilly.servlet.multipart.Part;public class Upload {

/*** 上传图片** @param request* @param response* @param url2 文件的存放路径* @return* @throws ServletException* @throws IOException*/@SuppressWarnings({ "static-access", "unchecked" })public static Map<String, Object> doGet(HttpServletRequest request, HttpServletResponse response, String url2)throws ServletException, IOException {Map<String, Object> paramMap = new HashMap<String, Object>();StringBuilder image = new StringBuilder();StringBuilder details_image = new StringBuilder();try {// 1、创建工厂类:DiskFileItemFactoryDiskFileItemFactory facotry = new DiskFileItemFactory();// 2、创建核心解析类:ServletFileUploadServletFileUpload upload = new ServletFileUpload(facotry);upload.setHeaderEncoding("UTF-8");// 解决上传的文件名乱码// 3、判断用户的表单提交方式是不是multipart/form-databoolean bb = upload.isMultipartContent(request);if (!bb) {return null;}// 4、是:解析request对象的正文内容List<FileItem>List<FileItem> items = upload.parseRequest(request);String storePath = request.getSession().getServletContext().getRealPath("/upload/pjimages");// 上传的文件的存放目录for (FileItem item : items) {if (item.isFormField()) {// 5、判断是否是普通表单:打印看看String fieldName = item.getFieldName();// 请求参数名String fieldValue = item.getString("UTF-8");// 请求参数值// System.out.println(fieldName + "=" + fieldValue);if (fieldName.equals("old") && !fieldValue.equals("")) {details_image.append(fieldValue);details_image.append(",");}paramMap.put(fieldName, fieldValue);} else {// 6、上传表单:得到输入流,处理上传:保存到服务器的某个目录中,保存时的文件名是啥?String fileName = item.getName();// 得到上传文件的名称 C:\Documents// and// Settings\shc\桌面\a.txt// a.txt// 解决用户没有选择文件上传的情况if (fileName == null || fileName.trim().equals("")) {continue;}fileName = fileName.substring(fileName.lastIndexOf("/") + 1);String newFileName = fileName;InputStream in = item.getInputStream();String name = new Date().getTime() + newFileName;String savePath = storePath + "/" + name;String url = url2 + "/" + name;// System.out.println(item.getFieldName()+"上传的文件地址:"+savePath);if (item.getFieldName().equals("image")) {image.append(url);image.append(",");}if (item.getFieldName().equals("details_image")) {details_image.append(url);details_image.append(",");} else {paramMap.put(item.getFieldName(), url);}OutputStream out = new FileOutputStream(savePath);byte b[] = new byte[1024];int len = 0;while ((len = in.read(b)) != -1) {out.write(b, 0, len);}in.close();out.close();item.delete();// 删除临时文件}}if (image != null && image.length() != 0 && !"".equals(image.toString())) {String images = image.toString().substring(0, image.toString().length() - 1);paramMap.put("image", images);}if (details_image != null && details_image.length() != 0 && !"".equals(details_image.toString())) {String details_images = details_image.toString().substring(0, details_image.toString().length() - 1);paramMap.put("details_image", details_images);}} catch (Exception e) {e.printStackTrace();request.setAttribute("message", "上传失败");request.getRequestDispatcher("/message.jsp").forward(request, response);}return paramMap;}

}

cos.jar包下载 /s/1VUZs4ELd60Oc_BtB41BSYQ 如果还有什么问题 可以加 qq9347

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。