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"
                    οnchange="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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.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、创建工厂类:DiskFileItemFactory
            DiskFileItemFactory facotry = new DiskFileItemFactory();
 
 
            // 2、创建核心解析类:ServletFileUpload
            ServletFileUpload upload = new ServletFileUpload(facotry);
            upload.setHeaderEncoding("UTF-8");// 解决上传的文件名乱码
 
 
            // 3、判断用户的表单提交方式是不是multipart/form-data
            boolean 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包下载  点击打开链接  如果还有什么问题 可以加 qq93472007
--------------------- 
作者:故事说到这里 
来源:CSDN 
原文:https://blog.csdn.net/qq_34469943/article/details/69945158 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值