A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郑传庆 于 2012-6-10 18:48 编辑

下面只是一小段代码,我只想了解分隔符的问题。在使用HttpURLConnection上传文件的时候,  为什么要设置分隔符?表示理解不过来,谁能解析下


           HttpURLConnection connection;
           URL url = new URL(reqUrl);
            connection= (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setConnectTimeout(5000);//毫秒         
           connection.setReadTimeout(5000);
            connection.setDoOutput(true);

String boundary= "-----------------------------114975832116442893661388290519"; // 分隔符,而且只要带有"----"后面是不是可以随便跟任何字符?如:"----1234asdha"
connection.setRequestProperty(" ", "=" + boundary);

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
  1. 先看下面,以这样的表单提交。
  2. <form name="upform" action="uploadServlet" method="POST"
  3. enctype="multipart/form-data">
  4. 参数<input type="text" name="username"/>

  5. 文件1<input type="file" name="file1"/>

  6. 文件2<input type="file" name="file2"/>

  7. <input type="submit" value="Submit" />

  8. </form>
  9. 在上面的文本框输入hello word,然后下面是两个简单的txt文件。
  10. 在服务器端收到的数据如下:
  11. -----------------------------7da2e536604c8//这是分隔符,里面的数值是浏览器随机算的,表示在下面的数据里用到的分隔符,末尾是\r\n
  12. Content-Disposition: form-data; name="username"//第一个文本框,写明了参数的名字
  13. hello word//参数的值
  14. -----------------------------7da2e536604c8//分隔符,表示又一项参数
  15. Content-Disposition: form-data; name="file1"; filename="D:\haha.txt"//参数name值,文件名
  16. Content-Type: text/plain//文件类型
  17. testline1//这两行是文件内容
  18. testline2
  19. -----------------------------7da2e536604c8//又一项参数开始
  20. Content-Disposition: form-data; name="file2"; filename="D:\huhu.txt"//另一个文件
  21. Content-Type: text/plain
  22. aaaaaaaaaaaaaa
  23. bbbbb
  24. -----------------------------7da2e536604c8--//结束
  25. 分隔符没有固定的格式,在提交数据之前,通过httpURLConnection.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);设置分隔符
  26. 服务端便以这里设置的分隔符来解析客户端提交的数据。
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
那我是不是可以这样理解为:分隔符就相等于换行符,便于程序解析数据,不设置分隔符解析数据的时候就出错导致乱码的出现?是不是只有向服务器提交数据的时候才设置分隔符?期待回复......
回复 使用道具 举报
分隔符一定要设置的独一无二,避免在需要解析的有效数据中也出现,像把分隔符设成"name"就完全不可行,所以浏览器自动生成的会那么复杂。
分隔符便于解析数据,不设置肯定会出问题,出怎样的问题我就不知了。什么时候需要设置分隔符?自已用底层api向服务器传数据时应该都要设置,除非浏览器帮你实现或api里有默认分隔符这一说。
回复 使用道具 举报
赵兵锋 发表于 2012-6-10 18:21
分隔符一定要设置的独一无二,避免在需要解析的有效数据中也出现,像把分隔符设成"name"就完全不可行,所以 ...

那以后,我记着要设置分隔符的时候,就设置独一无二的就行了。谢谢了哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马