这篇文章将为大家详细讲解有关Android应用中怎么将文件上传到服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联建站主营田家庵网站建设的网络公司,主营网站建设方案,手机APP定制开发,田家庵h5微信小程序定制开发搭建,田家庵网站营销推广欢迎田家庵等地区企业咨询
1)、新建一个Android项目命名为androidUpload,目录结构如下:

2)、新建FormFile类,用来封装文件信息
package com.ljq.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
/**
* 上传文件
*/
public class FormFile {
/* 上传文件的数据 */
private byte[] data;
private InputStream inStream;
private File file;
/* 文件名称 */
private String filname;
/* 请求参数名称*/
private String parameterName;
/* 内容类型 */
private String contentType = "application/octet-stream";
public FormFile(String filname, byte[] data, String parameterName, String contentType) {
this.data = data;
this.filname = filname;
this.parameterName = parameterName;
if(contentType!=null) this.contentType = contentType;
}
public FormFile(String filname, File file, String parameterName, String contentType) {
this.filname = filname;
this.parameterName = parameterName;
this.file = file;
try {
this.inStream = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if(contentType!=null) this.contentType = contentType;
}
public File getFile() {
return file;
}
public InputStream getInStream() {
return inStream;
}
public byte[] getData() {
return data;
}
public String getFilname() {
return filname;
}
public void setFilname(String filname) {
this.filname = filname;
}
public String getParameterName() {
return parameterName;
}
public void setParameterName(String parameterName) {
this.parameterName = parameterName;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}3)、新建SocketHttpRequester类,封装上传文件到服务器代码
package com.ljq.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
import java.util.Map;
/**
* 上传文件到服务器
*
* @author Administrator
*
*/
public class SocketHttpRequester {
/**
* 直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能:
*
* @param path 上传路径(注:避免使用localhost或127.0.0.1这样的路径测试,因为它会指向手机模拟器,你可以使用http://www.iteye.cn或http://192.168.1.101:8083这样的路径测试)
* @param params 请求参数 key为参数名,value为参数值
* @param file 上传文件
*/
public static boolean post(String path, Map4)、新建MainActivity类,实现每隔5秒上传一次
package com.ljq.activity;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import com.ljq.utils.FormFile;
import com.ljq.utils.SocketHttpRequester;
public class MainActivity extends Activity {
private File file;
private Handler handler;
private static final String TAG="MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "onCreate");
file = new File(Environment.getExternalStorageDirectory(), "123.rmvb");
Log.i(TAG, "照片文件是否存在:"+file);
handler=new Handler();
handler.post(runnable);
}
Runnable runnable=new Runnable() {
public void run() {
Log.i(TAG, "runnable run");
uploadFile(file);
handler.postDelayed(runnable, 5000);
}
};
/**
* 上传图片到服务器
*
* @param imageFile 包含路径
*/
public void uploadFile(File imageFile) {
Log.i(TAG, "upload start");
try {
String requestUrl = "http://192.168.1.101:8083/upload/upload/execute.do";
//请求普通信息
Map params = new HashMap();
params.put("username", "张三");
params.put("pwd", "zhangsan");
params.put("age", "21");
params.put("fileName", imageFile.getName());
//上传文件
FormFile formfile = new FormFile(imageFile.getName(), imageFile, "image", "application/octet-stream");
SocketHttpRequester.post(requestUrl, params, formfile);
Log.i(TAG, "upload success");
} catch (Exception e) {
Log.i(TAG, "upload error");
e.printStackTrace();
}
Log.i(TAG, "upload end");
}
} 5)、修改清单文件
<?xml version="1.0" encoding="utf-8"?>
关于Android应用中怎么将文件上传到服务器就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。