HttpClient通过post上传文件和提交参数

上传:

public void postFile(String imgpath, String fileUuid) throws Exception{

String response = "";
Properties pro = GetProperties.getKey("wgh.properties");
String fileurl = pro.getProperty("fileUrl");
PostMethod postMethod = new PostMethod(fileurl);
HttpClient client = new HttpClient();
String resource =  this.getClass().getClassLoader().getResource("").getPath();
resource = resource.substring(1, resource.indexOf("WEB-INF/")); 
String imgfile = resource + imgpath;
File file = new File(imgfile);

if (file.exists()) {

  //FilePart:用来上传文件的类

FilePart fp = new FilePart("file", file);
fp.setCharSet("utf-8");    
fp.setContentType("image/*"); 
//StringPart:普通文本参数
StringPart idPart = new StringPart("fileUuid", fileUuid);
idPart.setCharSet("utf-8");
Part[] parts = {idPart, fp};
//HttpClient使用MultipartRequestEntity包装
MultipartRequestEntity mre = new MultipartRequestEntity(parts, postMethod.getParams());
postMethod.setRequestEntity(mre);
//由于要上传的文件可能比较大,因此在此设置最大的连接超时时间
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int status = client.executeMethod(postMethod);
if (status == HttpStatus.SC_OK) {
InputStream inputStream = postMethod.getResponseBodyAsStream();
BufferedReader br = new  BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while ((str = br.readLine()) != null) {
stringBuffer.append(str);
}
response = stringBuffer.toString();
} else {
response = "fail";
}
System.out.println("图片同步结果:" + response);
}

}


接收:

       //new一个DiskFileItemFactory类型的对象factory(文件工厂)
         
        DiskFileItemFactory factory = new DiskFileItemFactory();
         
        //为factory设置是否将上传文件已临时文件的形式保存在磁盘的临界值
        //(以字节为单位的int值)
         
        factory.setSizeThreshold(2048 * 1024);
         
        //文件上传监听器
         
        UploadProgressListener getBarListener = new UploadProgressListener
        (request);
         
        //new一个ServletFileUpload类型的对象upload
         
        ServletFileUpload upload = new ServletFileUpload(factory);
         
        //监听upload
         
        upload.setProgressListener(getBarListener);
 
        //请求体中获取参数赋值到formList
         
        List formList = upload.parseRequest(request);
         
        //建立迭代器formItem
         
        Iterator<Object> formItem = formList.iterator();
         
        //当formItem序列中还有元素时
         
        while (formItem.hasNext()) {
         
            //建立一个FileItem类的对象item
             
            FileItem item = (FileItem) formItem.next();
             
            //判断item封装的数据是一个普通文本表单字段,
            //还是一个文件上传表单字段,
            //如果是普通表单字段则返回true,否则返回false
            //此处为文件上传表单字段不做任何操作
             
            if (!item.isFormField()) {
                 
            }else{//普通文本表单字段
                 
                //定义fieldName用于返回表单标签name属性的值
                 
                String fieldName = item.getFieldName();
                 
                if (fieldName.equals("user")) {//值为user
                     
                    //input_user=item的UTF-8格式
                     
                    input_user = item.getString("UTF-8");
                }
                if (fieldName.equals("password")) {//值为password
                     
                    //input_passw=item的UTF-8格式
                     
                    input_passw = item.getString("UTF-8");
                }
 
                if (fieldName.equals("isselect")) {//值为isselect
                     
                    //select_ts=item的UTF-8格式
                     
                    select_ts = item.getString("UTF-8");
                }
            }

猜你喜欢

转载自blog.csdn.net/g_blue_wind/article/details/78458419
今日推荐