转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23781773
文件上传是我们项目中经常使用的功能,一般我们的服务器可能都是web服务器,当我们使用非浏览器客户端上传文件时,比如手机(Android)等上传,可能就需要对传输的数据进行规范化的拼接,说白了,就是我们得自己完成浏览器帮我们做的事。
我首先写了服务器端代码,用来接收我们的数据,一会会贴出源码。然后写了个web页面用于上次,便于我们看其中的原理。
当点击了上传以后,这里我使用了firefox的firebug来观察网络信息,可以看到发出了一个POST请求,下面我框出的是请求头信息。里面包含一些请求的配置数据。
接下来看这张图:
我们可以看到我们发送的数据,一个是name为username的普通表单数据,一个为name为uploadFile的一个文件数据,可以看得出来,浏览器把文件数据转化成了2进制然后按特定的格式发给服务器了。
好了,下面开始实现上传,模拟浏览器的操作。
1、使用HttpUrlConnection
private static final String BOUNDARY = "----WebKitFormBoundaryT1HoybnYeFOGFlBR";
/**
*
* @param params
* 传递的普通参数
* @param uploadFile
* 需要上传的文件名
* @param fileFormName
* 需要上传文件表单中的名字
* @param newFileName
* 上传的文件名称,不填写将为uploadFile的名称
* @param urlStr
* 上传的服务器的路径
* @throws IOException
*/
public void uploadForm(Map params, String file