common-httpclient上传文件

要使用httpclient必须引入commons-codec.jar,commons-io.jar,comons-httpclent.jar。

客户端上传代码:

try {
	    File sendFile = new File(filePath);
	    PostMethod postMethod = new PostMethod(sendURL.toString());
	    Part[] parts = { new FilePart(sendFile.getName(), sendFile) };// 构建发送的文件对象
	    MultipartRequestEntity reqEntity = new MultipartRequestEntity(
		    parts, postMethod.getParams());
	    postMethod.setRequestEntity(reqEntity);
	    HttpClient httpClient = new HttpClient();
	    int statusCode = httpClient.executeMethod(postMethod);
	    if (statusCode == HttpStatus.SC_OK) {
		System.out.println("文件发送成功!");
	    } else {
		System.out.println("文件发送失败");
	    }
}

服务端接收上传文件,使用commons-fileupload组件,用servlet来处理

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class ImageScanUploadServlet implements Servlet {
    private String uploadPath = "D:\\temp"; // 上传文件的目录

    private String tempPath = "D:\\temp\\buffer\\"; // 临时文件目录

    private File tempPathFile;

    @Override
    public void destroy() {
    }

    @Override
    public ServletConfig getServletConfig() {
	return null;
    }

    @Override
    public String getServletInfo() {
	return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
	File uploadFile = new File(uploadPath);
	if (!uploadFile.exists()) {
	    uploadFile.mkdirs();
	}
	File tempPathFile = new File(tempPath);
	if (!tempPathFile.exists()) {
	    tempPathFile.mkdirs();
	}
    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
	    throws ServletException, IOException {
	try {
	    HttpServletRequest request = (HttpServletRequest) arg0;
	    HttpServletResponse response = (HttpServletResponse) arg1;
	    DiskFileItemFactory factory = new DiskFileItemFactory();
	    factory.setSizeThreshold(4096);// 设置缓冲区大小,这里是4kb
	    factory.setRepository(tempPathFile);
	    ServletFileUpload upload = new ServletFileUpload(factory);
	    upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
	    List<FileItem> items = upload.parseRequest(request);
	    for (FileItem fi : items) {
		String fileName = fi.getName();
		if (fileName != null) {
		    File fullFile = new File(fi.getName());
		    File savedFile = new File(uploadPath, fullFile.getName());
		    fi.write(savedFile);
		}
		System.out.println("upload succeed");
	    }
	    response.getWriter().write("upload succeed");
	} catch (FileUploadException e) {
	    e.printStackTrace();
	} catch (Exception e) {
	    e.printStackTrace();
	}

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值