`

http文件上传和普通字段

 
阅读更多

Android中集成了一个apache组织提供的一个开源的访问互联网的客户端程序
HttpClient  可以使用它来发送数据
 
这里有两个方法,是往互联网传送数据时候用的
一个是传送普通文本的,一个是传送带附件的
这两个方法就可以满足我们正常的所有需求了
 
public class HttpRequester {
 
  public static String post(String actionUrl, Map<String, String> params, FormFile[] files) {
      try {          
          String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线
          String MULTIPART_FORM_DATA = "multipart/form-data";
         
          URL url = new URL(actionUrl);
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setConnectTimeout(6* 1000);
          conn.setDoInput(true);//允许输入
          conn.setDoOutput(true);//允许输出
          conn.setUseCaches(false);//不使用Cache
          conn.setRequestMethod("POST");          
          conn.setRequestProperty("Connection", "Keep-Alive");
          conn.setRequestProperty("Charset", "UTF-8");
          conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY);
 
          StringBuilder sb = new StringBuilder();
          for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容
              sb.append("--");
              sb.append(BOUNDARY);
              sb.append("\r\n");
              sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");
              sb.append(entry.getValue());
              sb.append("\r\n");
          }
          DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
          outStream.write(sb.toString().getBytes());//发送表单字段数据
          for(FormFile file : files){//发送文件数据
          StringBuilder split = new StringBuilder();
              split.append("--");
              split.append(BOUNDARY);
              split.append("\r\n");
              split.append("Content-Disposition: form-data;name=\""+ file.getFormname()+"\";filename=\""+ file.getFilname() + "\"\r\n");
              split.append("Content-Type: "+ file.getContentType()+"\r\n\r\n");
              outStream.write(split.toString().getBytes());
              outStream.write(file.getData(), 0, file.getData().length);
              outStream.write("\r\n".getBytes());
          }
          byte[] end_data = ("--" + BOUNDARY + "--\r\n").getBytes();//数据结束标志       
          outStream.write(end_data);
          outStream.flush();
          int cah = conn.getResponseCode();
          if (cah != 200) throw new RuntimeException("请求url失败");
          InputStream is = conn.getInputStream();
          int ch;
          StringBuilder b = new StringBuilder();
          while( (ch = is.read()) != -1 ){
          b.append((char)ch);
          }
          Log.i("ItcastHttpPost", b.toString());         
          outStream.close();
          conn.disconnect();
          return b.toString();
      } catch (Exception e) {
       throw new RuntimeException(e);
      }
  }
 
 
  public static String post(String actionUrl, Map<String, String> params, FormFile file) {
     return post(actionUrl, params, new FormFile[]{file});
  }
 
 
  public static String post(String actionUrl, Map<String, String> params) {
        HttpPost httpPost = new HttpPost(actionUrl);
        List<NameValuePair> list = new ArrayList<NameValuePair>();
        for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容
            list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
        }
        try {
         httpPost.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));
         HttpResponse httpResponse = new DefaultHttpClient().execute(httpPost);
         if(httpResponse.getStatusLine().getStatusCode() == 200){
            return EntityUtils.toString(httpResponse.getEntity());
         }
     } catch (Exception e) {
         throw new RuntimeException(e);
     }
     return null; 
    }
}
 
分享到:
评论

相关推荐

    SmartUpload上传文件和普通表单例子

    这个"SmartUpload上传文件和普通表单例子"将帮助你理解和实践这一过程,加深对Web应用中文件上传操作的理解。通过实际动手,你可以更好地掌握SmartUpload的使用技巧,从而在项目中更加灵活地处理文件上传需求。

    jsp,servlet普通表单+文件上传

    本示例中的“jsp,servlet普通表单+文件上传”着重讲解如何结合这两种技术实现一个包含普通输入字段和文件上传功能的表单。 首先,`jsp`是一种服务器端脚本语言,它允许在HTML页面中嵌入Java代码,从而实现动态网页...

    MultipartHttpServletRequest_文件上传

    1. **单一文件上传**:`@RequestMapping(value="/uploadFile/{path}",method=RequestMethod.POST)` 方法接收一个路径参数和`HttpServletRequest`、`HttpServletResponse`对象。这里,`MultipartHttpServletRequest`...

    javaWeb上传代码(普通上传和ajax后台上传)

    总的来说,JavaWeb中的文件上传涉及到HTTP协议、Servlet API和第三方库的使用。Apache Commons FileUpload简化了这一过程,让开发者可以专注于业务逻辑,而不用关心底层的文件读写细节。通过实践和理解这两种上传...

    使用fileupload组件实现文件上传功能

    下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两个jar包:commons-fileUpload.jar和commons-io.jar。然后,需要创建工厂类DiskFileItemFactory,用于创建FileItem对象。...

    jsp文件上传类 jsp文件上传类

    本知识点将详细讲解JSP中的文件上传类和相关技术,以及如何实现一个基本的文件上传功能。 1. **multipart/form-data**:在JSP中进行文件上传时,首先需要在HTML表单中设置`enctype="multipart/form-data"`。这是...

    Java自带的HttpURLConnection访问接口实现文件上传

    然而,HttpURLConnection是Java的标准库,适合学习基础的HTTP通信和文件上传。 总结,Java的HttpURLConnection接口提供了基本的HTTP通信能力,包括文件上传。通过设置请求头、写入请求体并处理响应,我们可以实现...

    通用文件上传下载接口使用说明

    在通用文件上传下载接口中,文件上传的主要字段是文件主键 id,上传文件时会返回该 id,然后可以根据该 id 进行文件下载和删除操作。 文件上传接口的 URI 是 `/iot/iotware/v2/file/upload`,请求方法是 POST,传输...

    java上传文件jar

    这两个库提供了强大的文件操作和文件上传功能,是Java开发者处理文件上传问题的得力助手。 首先,`commons-io-2.5.jar`是Apache Commons IO库的一部分,这是一个用于处理输入/输出操作的Java库。它提供了许多实用...

    多文件和普通属性同时上传

    在IT领域,多文件上传是一项常见的功能,尤其在web应用和云存储服务中。这个功能允许用户一次性上传多个文件,极大地提高了工作效率。与此同时,普通属性的上传通常指的是与这些文件相关的元数据信息,如文件名、...

    上传文件所需jar包

    为了实现文件上传功能,开发者通常需要依赖一些外部库,比如Apache Commons IO和Apache Commons FileUpload。这两个库提供了丰富的功能,使得处理文件上传变得更加简单和高效。接下来,我们将详细讨论这两个jar包...

    解决java enctype multipart form-data文件上传传值问题

    - 遍历`List&lt;FileItem&gt;`,区分普通字段和文件字段。 - 对于文件字段,使用特定逻辑进行处理。 #### 四、示例代码详解 以下是对给定的部分内容进行解读: ```java public class UpLoadFile extends HttpServlet ...

    文件上传jar包

    综上所述,Apache的`Commons FileUpload`和`Commons IO`库为Java开发者提供了强大而全面的文件上传和处理能力,是构建高效、安全的文件上传功能的重要工具。正确理解和使用这两个库,可以大大提高开发效率并提升应用...

    多文件上传功能源码MultipartRequest.

    总的来说,`MultipartRequest`是Java Web开发中实现多文件上传的关键工具,通过它可以方便地处理文件上传请求,并能妥善处理包含非ASCII字符的文件名,确保文件上传过程的稳定性和兼容性。通过阅读和理解这个源码,...

    Layui图片上、视频、音频、文件上传接口及跨域上传

    总之,Layui的文件上传功能强大且灵活,无论是图片、视频、音频还是普通文件,都能通过其`upload`模块轻松实现。同时,配合合理的后端设置,可以实现跨域上传,为分布式系统的开发带来了便利。在实际项目中,开发者...

    通用文件上传下载接口使用说明.docx

    文件上传的回应数据格式是一个JSON对象,包括code、data和requestId三个字段。其中,data字段包含了文件的详细信息,包括id、tenantId、fileName、fileSize、ttl和createTime。 在文件下载部分,我们可以使用通用...

    用JavaBean实现文件上传

    - 在`multipart/form-data`编码中,普通文本字段和文件字段都被视为不同的部分,这样可以确保数据和文件被正确解析。 #### 三、JavaBean实现文件上传逻辑 **1. JavaBean的作用** - JavaBean `SimpleBean`的主要...

    Apache的文件上传的jar包

    在Java中,Apache提供了一套便捷的工具库来处理文件上传任务,主要涉及两个核心的jar包:`commons-fileupload`和`commons-io`。这两个jar包协同工作,为我们提供了强大的文件上传支持。 `commons-fileupload`是...

    javaweb表单数据和多文件上传

    在Java Web开发中,表单数据和文件上传是常见的需求,尤其在构建动态网页和交互式应用程序时。本文将深入探讨如何使用Java Servlet和相关的库(如Apache Commons FileUpload)来实现这一功能。 首先,我们需要了解...

    java做的一个带进度条的文件上传小项目

    本项目是一个使用Java实现的带有进度条和取消功能的文件上传示例,它利用了Apache的Commons FileUpload库来处理文件上传的过程。Commons FileUpload是Java的一个开源组件,专门用于处理HTTP请求中的多部分/表单数据...

Global site tag (gtag.js) - Google Analytics