java使用fileupload接收上传文件

需要的包是:


java服务接收端:

方法(一)

//上传图片到服务器,并且获得url
	@RequestMapping("GetPortraitUrl")
	public @ResponseBody
	GetPortraitUrlResponse GetPortraitUrl(HttpServletRequest request) throws Exception{
		String uploadPath = "f:\\temp"; // 上传文件的目录
		String tempPath = "f:\\temp\\buffer\\"; //临时文件目录
		File uploadFile = new File(uploadPath);
		if (!uploadFile.exists()) {
			uploadFile.mkdirs();
		}
		File tempPathFile= new File(tempPath);
		if (!tempPathFile.exists()) {
			tempPathFile.mkdirs();
		}
		System.out.println(request.getContentType());
		GetPortraitUrlResponse rResponse=new GetPortraitUrlResponse();
		DiskFileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);
		factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
		factory.setRepository(tempPathFile);// 设置缓冲区目录
		upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
		try {
			List<FileItem> items = upload.parseRequest(request);
			Iterator<FileItem> i = items.iterator();
			while (i.hasNext()) {
				FileItem fi = (FileItem) i.next();
				String fileName = fi.getName();
				if (fileName != null) {
					File fullFile = new File(fi.getName());
					File savedFile = new File(uploadPath, fullFile.getName());
					fi.write(savedFile);
				}
			}
		} catch (org.apache.commons.fileupload.FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}// 得到所有的文件
		return rResponse;	
	}
方法(二)

//图片上传
		@RequestMapping("GetPortraitUrl")
	    public void receiveData(HttpServletRequest request, HttpServletResponse response){  
	        
            PrintWriter out = null;  
            response.setContentType("text/html;charset=UTF-8");  
              
            Map map = new HashMap();  
            FileItemFactory factory = new DiskFileItemFactory();  
            ServletFileUpload upload = new ServletFileUpload(factory);  
            File directory = null;    
            List<FileItem> items = new ArrayList();  
            try {  
                items = upload.parseRequest(request);  
                // 得到所有的文件  
                Iterator<FileItem> it = items.iterator();  
                while (it.hasNext()) {  
                    FileItem fItem = (FileItem) it.next();  
                    String fName = "";  
                    Object fValue = null;  
                    if (fItem.isFormField()) { // 普通文本框的值  
                        fName = fItem.getFieldName();  
    //                  fValue = fItem.getString();  
                        fValue = fItem.getString("UTF-8");  
                        map.put(fName, fValue);  
                    } else { // 获取上传文件的值  
                        fName = fItem.getFieldName();  
                        fValue = fItem.getInputStream();  
                        map.put(fName, fValue);  
                        String name = fItem.getName();  
                        if(name != null && !("".equals(name))) {  
                            name = name.substring(name.lastIndexOf(File.separator) + 1);  
                              
    //                      String stamp = StringUtils.getFormattedCurrDateNumberString();  
                      
                            directory = new File("f://test");    
                                 directory.mkdirs();  
                              
                            String filePath = ("f://test")+ File.separator + name;  
                            map.put(fName + "FilePath", filePath);  
                              
                            InputStream is = fItem.getInputStream();  
                            FileOutputStream fos = new FileOutputStream(filePath);  
                            byte[] buffer = new byte[1024];  
                            while (is.read(buffer) > 0) {  
                                fos.write(buffer, 0, buffer.length);  
                            }  
                            fos.flush();  
                            fos.close();  
                            map.put(fName + "FileName", name);  
                        }  
                    }  
                }  
            } catch (Exception e) {  
                System.out.println("读取http请求属性值出错!");  
    //          e.printStackTrace();  
            }  
              
            // 数据处理  
              
              
              
              
            try {  
                out = response.getWriter();  
                out.print("{success:true, msg:'接收成功'}");  
                out.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
      
      
        }  



update.jsp文件:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" isELIgnored="false"%>
      <%
    String appContext= request.getContextPath();// 获得当前应用的根路径
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + appContext+"/" ;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>上传目录</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data" action="GetPortraitUrl" name="uploadForm">
  选择一个文件: <input type="file" name="upfile"><br/>
  <br/>
  <input type="submit" value="上传">
</form>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_25858235/article/details/78696975