介绍
这篇文章将为大家详细讲解有关Android应用中怎么将文件上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1),新建一个Android项目命名为androidUpload,目录结构如下:
2),新建FormFile类,用来封装文件信息
包com.ljq.utils; 进口java.io.File; 进口java.io.FileInputStream; 进口java.io.FileNotFoundException; 进口java.io.InputStream;/* * *上传文件 */公开课FormFile {/*上传文件的数据*/私人byte[]数据; 私人InputStream生态基; 私人文件文件;/*文件名称*/私人字符串filname;/*请求参数名称*/私人字符串parameterName;/*内容类型*/私人字符串contentType=坝τ贸绦?octet-stream"; 公共FormFile(字符串filname, byte[]的数据,字符串parameterName,字符串contentType) { 这一点。数据=https://www.yisu.com/zixun/data; 这一点。filname=filname; 这一点。parameterName=parameterName; 如果(contentType !=null)。contentType=contentType; } 公共FormFile (parameterName filname字符串、文件文件、字符串,字符串contentType) { 这一点。filname=filname; 这一点。parameterName=parameterName; 这一点。文件=文件; 尝试{ 这一点。生态基=new FileInputStream(文件); }捕捉(FileNotFoundException e) { e.printStackTrace (); } 如果(contentType !=null)。contentType=contentType; } 公共文件getFile () { 返回文件; } 公共InputStream getInStream () { 返回生态基; } 公共byte [] getData () { 返回数据; } 公共字符串getFilname () { 返回filname; } 公共空间setFilname(字符串filname) { 这一点。filname=filname; } 公共字符串getParameterName () { 返回parameterName; } 公共空间setParameterName(字符串parameterName) { 这一点。parameterName=parameterName; } 公共字符串getContentType () { 返回contentType; } 公共空间setContentType(字符串contentType) { 这一点。contentType=contentType; } }
3),新建SocketHttpRequester类,封装上传文件到服务器代码
包com.ljq.utils; 进口java.io.BufferedReader; 进口java.io.InputStreamReader; 进口java.io.OutputStream; 进口java.net.InetAddress; 进口java.net.Socket; 进口java.net.URL; 进口java.util.Map;/* * *上传文件到服务器 * * @author管理员 * */公开课SocketHttpRequester {/* * *直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能: * & lt;表单POST操作方法==癶ttp://192.168.1.101:8083/上传/servlet/UploadServlet"enctype=岸嗖糠?form-data"比; & lt;输入类型=皌ext"NAME=皀ame"比; & lt;输入类型=皌ext"NAME=癷d"比; & lt;输入类型=癴ile"name=癷magefile"/比; & lt;输入类型=癴ile"name=皕ip"/比; & lt;/FORM> * @param路径上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083这样的路径测试) * @param params请求参数键为参数名,值为参数的值 * @param文件上传文件 */公共静态布尔post (String路径,Map<字符串,String>params, FormFile[]{文件)抛出异常 最终字符串边界=? - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 da2137580612";//数据分隔线 最终字符串endline=啊?+边界+“——\ r \ n";//数据结束标志 int fileDataLength=0; (FormFile还是:文件){//得到文件类型数据的总长度 StringBuilder fileExplain=new StringBuilder (); fileExplain.append (“-”); fileExplain.append(边界); fileExplain.append (“\ r \ n"); fileExplain.append(“附加项:格式;name=\““+ uploadFile.getParameterName() +“\“;文件名=\“;“+ uploadFile.getFilname () +“\“\ r \ n"); fileExplain.append(“内容类型:“+ uploadFile.getContentType () +“\ r \ n \ r \ n"); fileExplain.append (“\ r \ n"); fileDataLength +=fileExplain.length (); 如果(uploadFile.getInStream () !=null) { fileDataLength +=uploadFile.getFile () . length (); 其他}{ fileDataLength +=uploadFile.getData . length (); } } StringBuilder textEntity=new StringBuilder (); (Map.EntryAndroid应用中怎么将文件上传到服务器