Android应用中怎么将文件上传到服务器

  介绍

这篇文章将为大家详细讲解有关Android应用中怎么将文件上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1),新建一个Android项目命名为androidUpload,目录结构如下:

 Android应用中怎么将文件上传到服务器

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.Entry

Android应用中怎么将文件上传到服务器