• java 文件上传


    情景再现:

    上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,后来查了查这是两种不同的内容类型,在http的请求体中,数据组织方式不一样,所以,后台接收失败。

    multipart/form-data:

    1、既可以提交普通键值对,也可以提交(多个)文件键值对。

    2、HTTP规范中的Content-Type不包含此类型,只能用在POST提交方式下,属于http客户端(浏览器、Java httpclient)的扩展

    3、通常在浏览器表单中,或者http客户端(Java httpclient)中使用。

    页面中,form的enctype是multipart/form-data,提交时,content-type也是multipart/form-data。

    multipart/form-data格式,

    [html] view plain copy
     
    1. POST http://www.xx.com/myproject/service1  
    2. Host: 192.168.0.201:8694  
    3. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  
    4. Cache-Control: no-cache  
    5. Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d  
    6.   
    7. ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    8. Content-Disposition: form-data; name="name1"  
    9.   
    10. value1  
    11. ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    12. Content-Disposition: form-data; name="name2"  
    13.   
    14. value2  
    15. ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    16. Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"  
    17. Content-Type: image/gif  
    18.   
    19.   
    20. ----WebKitFormBoundary7MA4YWxkTrZu0gW  
    21. Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"  
    22. Content-Type: image/jpeg  
    23.   
    24.   
    25. ----WebKitFormBoundary7MA4YWxkTrZu0gW  



    application/octet-stream

    1、只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)

    2、属于HTTP规范中Content-Type的一种

    3、很少使用

    application/x-www-form-urlencoded

    1、不属于http content-type规范,通常用于浏览器表单提交,数据组织格式:name1=value1&name2=value2,post时会放入http body,get时,显示在在地址栏。

    2、所有键与值,都会被urlencoded,请查看urlencoder

    数据组织格式

    [html] view plain copy
     
      1. POST http://www.xx.com/myproject/service HTTP/1.1  
      2. Host: 192.168.0.201:8694  
      3. Content-Type: application/json  
      4. Cache-Control: no-cache  
      5. Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa  
      6.   
      7. name11=file1&name2=value2  
  • 相关阅读:
    1010 Radix (25 分)(二分)【回顾】
    1089 Insert or Merge (25 分)(two pointers)【回顾】
    1084 Broken Keyboard (20 分)(字符串处理)
    Listener监听器之HttpSessionListener
    在IE中如何在用户直接关闭窗口前清除Session
    C#文件操作简单封装
    几个实用的对String类的扩展
    C# 数据加密解密
    在IIS6中配置asp.net MVC网站时HTTP 错误 500.21 Internal Server Error解决方案
    C#常用的正则表达式
  • 原文地址:https://www.cnblogs.com/yelongsan/p/6726136.html
Copyright © 2020-2023  润新知