使用WebUploader实现图片上传

使用WebUploader实现图片上传,第1张

前言:

        案例使用的开发工具:eclipse

        不足之处希望各位大佬们多多指教( ̄▽ ̄*)顶

1. jar包

        

2. js文件

                




3. HTML代码

              


选择图片
4. js代码
5. XML配置         5.1 web.xml

    
    WebUploaderServlet
    WebUploaderServlet
    servlet.WebUploaderServlet


    WebUploaderServlet
    /webUploader.do
        5.2 Tomcat下的server.xml的标签中添加

                

                        

6. java代码        6.1 servlet:WebUploaderServlet.java

                

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
			Map map=WebUploaderAction.webUploaderImg(request, response);
			System.out.println("code:"+map.get("code")+" data:"+map.get("data"));
			try {
				response.getWriter().write(JSONObject.fromObject(map).toString());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
}
        6.2 class:WebUploaderAction.java

        

package action;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class WebUploaderAction extends HttpServlet{
		
		// 上传文件存储目录
	    private static final String UPLOAD_DIRECTORY = "upload";
	 
	    // 上传配置
	    private static final int MEMORY_THRESHOLD   = 1024 * 1024 * 3;  // 3MB
	    private static final int MAX_FILE_SIZE      = 1024 * 1024 * 40; // 40MB
	    private static final int MAX_REQUEST_SIZE   = 1024 * 1024 * 50; // 50MB
	
		public static Map webUploaderImg(HttpServletRequest request,HttpServletResponse response) {
			
			System.out.println("webUploaderImg方法进入");
			
			response.setCharacterEncoding("utf-8");
			response.setContentType("text/json");
			
			Map map=new HashMap();
			
			if (!ServletFileUpload.isMultipartContent(request)) {
	            // 如果不是则停止
				map.put("code", 400);
				map.put("data", "Error: 表单必须包含 enctype=multipart/form-data");
	            return map;
	        }
		
	        // 配置上传参数
	        DiskFileItemFactory factory = new DiskFileItemFactory();
	        // 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
	        factory.setSizeThreshold(MEMORY_THRESHOLD);
	        // 设置临时存储目录
	        factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
	        ServletFileUpload upload = new ServletFileUpload(factory);
	        // 设置最大文件上传值
	        upload.setFileSizeMax(MAX_FILE_SIZE);
	         
	        // 设置最大请求值 (包含文件和表单数据)
	        upload.setSizeMax(MAX_REQUEST_SIZE);
	        
	        // 中文处理
	        upload.setHeaderEncoding("UTF-8"); 

	        // 构造临时路径来存储上传的文件
	        // 这个路径相对当前应用的目录
	        String uploadPath = "D:/" + UPLOAD_DIRECTORY;
	        // 如果目录不存在则创建
	        File uploadDir = new File(uploadPath);
	        if (!uploadDir.exists()) {
	            uploadDir.mkdir();
	        }
	        //设置路径参数
	        String imgUrl="";
	        try {
	            // 解析请求的内容提取文件数据
	            @SuppressWarnings("unchecked")
	            List formItems = upload.parseRequest(request);
	            System.out.println("c");
	            if (formItems != null && formItems.size() > 0) {
	                // 迭代表单数据
	                for (FileItem item : formItems) {
	                    // 处理不在表单中的字段
	                    if (!item.isFormField()) {
	                    	//获取上传文件的名称
	                        String fileName =UUID.randomUUID().toString()+".png";//防重名
	                        //指定的类型
	                        String filePath = uploadPath + File.separator + fileName;
	                        File storeFile = new File(filePath);
	                        // 在控制台输出文件的上传路径
	                        System.out.println("文件上传成功:"+filePath);
	                        // 保存文件到硬盘
	                        item.write(storeFile);
	                        imgUrl="/" + UPLOAD_DIRECTORY + "/" + fileName;//不可以直接filePath
	                        System.out.println("imgUrl:"+imgUrl);
	                    }
	                }
	            }
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }
	        map.put("code",200);
	        map.put("data", imgUrl);
	        return map;
		}
}
7. 效果展示

        

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/740104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存