httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过httpmime.jar来操作)

发布时间:2016-12-10 13:15:59 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过httpmime.jar来操作)",主要涉及到httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过httpmime.jar来操作)方面的内容,对于httpclient通过POST来上传文件,而不是通过流的形式,并在服务端进行解析(通过httpmime.jar来操作)感兴趣的同学可以参考一下。

http://blog.csdn.net/linwei_1029/article/details/6990971 1. 首先需要对应的JAR包 导入 httpmime-4.1.1.jar。 [java] view plaincopy package url;      import io.IoStreamUtil;      import java.io.File;   import java.io.IOException;   import java.io.InputStream;      import org.apache.http.HttpEntity;   import org.apache.http.HttpResponse;   import org.apache.http.client.ClientProtocolException;   import org.apache.http.client.HttpClient;   import org.apache.http.client.methods.HttpPost;   import org.apache.http.entity.mime.MultipartEntity;   import org.apache.http.entity.mime.content.FileBody;   import org.apache.http.entity.mime.content.StringBody;   import org.apache.http.impl.client.DefaultHttpClient;      /**   * httpclient上传文件   * @author linwei   *   */   public class MultipartEntityUtil {          public static String postFile(File file,String url) throws ClientProtocolException, IOException {              FileBody bin = null;           HttpClient httpclient = new DefaultHttpClient();           HttpPost httppost = new HttpPost(url);           if(file != null) {               bin = new FileBody(file);           }              StringBody username = new StringBody("13696900475");           StringBody password = new StringBody("13696900475");   [java] view plaincopy //请记住,这边传递汉字会出现乱码,解决方法如下,设置好编码格式就好   [java] view plaincopy                //new StringBody("汉字",Charset.forName("UTF-8")));                MultipartEntity reqEntity = new MultipartEntity();       reqEntity.addPart("username", username);       reqEntity.addPart("password", password);       reqEntity.addPart("data", bin);              httppost.setEntity(reqEntity);       System.out.println("执行: " + httppost.getRequestLine());              HttpResponse response = httpclient.execute(httppost);       System.out.println("statusCode is " + response.getStatusLine().getStatusCode());       HttpEntity resEntity = response.getEntity();       System.out.println("----------------------------------------");       System.out.println(response.getStatusLine());       if (resEntity != null) {         System.out.println("返回长度: " + resEntity.getContentLength());         System.out.println("返回类型: " + resEntity.getContentType());         InputStream in = resEntity.getContent();         System.out.println("in is " + in);         System.out.println(IoStreamUtil.getStringFromInputStream(in));       }       if (resEntity != null) {         resEntity.consumeContent();       }       return null;   }      public static void main(String[] args) throws ClientProtocolException, IOException {          File file = new File("d:/rss.xml");       String url = "http://localhost:8080/webtest/servlet/URLTest";       postFile(file,url);   }   2. 服务端的接收解析代码(同样的,服务端也需要导入上面提到的JAR包) (特别注释:在servlet中直接获取的request是可以正常解析的,但是,在ACTION中获取的request则是通过ACTION内部的类进行了封装,因此,在ACTION中执行以下代码,upload.parseRequest(request)方法执行返回的是空的,暂没找到解决办法。)   [java] view plaincopy                 //commons-fileupload.jar  commons-io    <span style="white-space:pre">      </span>request.setCharacterEncoding("UTF-8");   <span style="white-space:pre">      </span>boolean isMultipart = ServletFileUpload.isMultipartContent(request);   <span style="white-space:pre">      </span>   <span style="white-space:pre">      </span>if (isMultipart) {                 FileItemFactory factory = new DiskFileItemFactory();                 ServletFileUpload upload = new ServletFileUpload(factory);                 try {                      List items = upload.parseRequest(request);                     Iterator iter = items.iterator();                     while (iter.hasNext()) {                         FileItem item = (FileItem) iter.next();                         if (item.isFormField()) {                             //普通文本信息处理                             String paramName = item.getFieldName();                             String paramValue = item.getString();                             System.out.println(paramName + ":" + paramValue);                         } else {                             //上传文件信息处理                             String fileName = item.getName();                             byte[] data = item.get();                             String filePath = "d:/ssssss.txt";                             FileOutputStream fos = new FileOutputStream(filePath);                             fos.write(data);                             fos.close();                         }                     }                  } catch (FileUploadException e) {                     e.printStackTrace();                 }             }    

上一篇:tomcat的启动过程
下一篇:Qt QFileSystemModel QDirModel 示例代码, 使用方法

相关文章

相关评论