android 文件上传类(可以直接被调用的)
来源:互联网 发布:windows dns 日志 编辑:程序博客网 时间:2024/05/17 08:47
android 文件上传的类–完整 可以直接被调用的
public class post {
// 如果是文本的文件的话那么通过map类传递进来如果是文件的话通过FormFile传递进来
public static String post(String actionUrl, Map params,
FormFile[] files) throws IOException {
String BOUNDARY = “743520vjdk4e”;
String MULTIPART_FROM_DATA = “multipart/form-data”;
URL uri = new URL(actionUrl);
HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000); // 缓存的最长时间
conn.setDoInput(true);// 允许输入
conn.setDoOutput(true);// 允许输出
conn.setUseCaches(false); // 不允许使用缓存
// 下面的几个值是必须需要设置进去的
conn.setRequestMethod(”POST”);
conn.setRequestProperty(”connection”, “keep-alive”);
conn.setRequestProperty(”Charsert”, “UTF-8″);
conn.setRequestProperty(”Content-Type”, MULTIPART_FROM_DATA
+ “:boundary” + BOUNDARY);
// 首先组拼文本类型的参数
StringBuilder sb = new StringBuilder();
// 这个地方使用了Map循环 map循环的方式需要注意一下了
for (Map.Entry entry : params.entrySet()) {
sb.append(”–”);
sb.append(BOUNDARY);
// 回车换行
sb.append(”\r\n”);
sb.append(”Content-Disposition:form-data:name\”" + entry.getKey()
+ “\r\n\r\n”);
sb.append(entry.getValue());
sb.append(”\r\n”);
}
DataOutputStream outStream = new DataOutputStream(conn
.getOutputStream());
outStream.write(sb.toString().getBytes());
// 前面必须是数组才可以
// 发送文件数据
for (FormFile file : files) {
StringBuilder sb1 = new StringBuilder();
sb1.append(”—”);
sb1.append(BOUNDARY);
sb1.append(”\r\n”);
// 这个地方没有完
sb1.append(”Content-Disposition:form-data:name=\”"
+ file.getFormname());
sb1.append(”Content-Type” + file.getContentType() + “\r\n\r\n”);
outStream.write(sb1.toString().getBytes());
// 先判断formfile里面是否为空 如果不为空的话则写出 获取formfile的data里面的
if (file.getInStream() != null) {
// 提供流的的方式的话就是一边读一边写了
byte[] buffer = new byte[1024];
int len = 0;
while ((len = file.getInStream().read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
file.getInStream().close();
} else {
outStream.write(file.getData(), 0, file.getData().length);
}
outStream.write(”\r\n”.getBytes());
}
byte[] end_data = (”–” + BOUNDARY + “\r\n”).getBytes();
outStream.write(end_data);
outStream.flush();
// 得到响应号码
int res = conn.getResponseCode();
if (res != 200)
throw new RuntimeException(”请求失败 “);
InputStream in = conn.getInputStream();
int ch;
StringBuilder sb2 = new StringBuilder();
while ((ch = in.read()) != -1) {
sb.append((char) ch);
}
outStream.close();
conn.disconnect();
return in.toString();
}
这是相关联的formFIle类的定义
public class FormFile {
// 定义了使用的文件的特点
// 上传文件的数据
private byte[] data;
private InputStream inStream;
// 文件名称
private String fileName;
// 请求参数名称
private String Formnames;
// 内容类型
private String contentType = “application/octet-stream”;
public FormFile(byte[] data, String fileName, String formnames,
String contentType) {
this.data = data;
this.fileName = fileName;
Formnames = formnames;
this.contentType = contentType;
}
public FormFile(InputStream inStream, String fileName, String formnames,
String contentType) {
this.inStream = inStream;
this.fileName = fileName;
Formnames = formnames;
this.contentType = contentType;
}
public byte[] getData() {
return data;
}
public void setData(byte[] data) {
this.data = data;
}
public InputStream getInStream() {
return inStream;
}
public void setInStream(InputStream inStream) {
this.inStream = inStream;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getFormnames() {
return Formnames;
}
public void setFormnames(String formnames) {
Formnames = formnames;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
}
- android 文件上传类(可以直接被调用的)
- android 文件上传的类--完整 可以直接被调用的
- Kindeditor -单独调用组件,可以直接调用上传功能。
- java下载页面的显示类,可以直接调用
- C#可以直接调用的Win32API
- 【文件上传】uploadify插件配合java的使用,可以图片,按照步骤可以复制粘贴直接运行,2017年
- Android客户端上传数据到服务器:可以上传简单的表单,也可以方便的上传带有附件的文件
- 求教,是否直接可以调用android的libmedia.so库进行音频播放
- 可以直接编辑PDF文件的解决方法
- android 可以直接拿去用的工具类方法
- Android直接可以使用的AES加密帮助类
- Android中再按一次退出封装 可以直接调用
- 简单实用 直接可以用的图片上传器
- 直接读取上传文件的内容
- 网上找的点击文件直接上传
- 封装好的一个的Toast工具类(可以直接调用)
- java的静态方法可以直接用类名调用的理解
- java的静态方法可以直接用类名调用的理解
- 网页游戏打击感实施要点
- C语言字节对齐及设置编译对齐方式方法
- 利用PowerDesigner设计数据库
- NSNotificationCenter消息机制
- TCP长连接与短连接的区别
- android 文件上传类(可以直接被调用的)
- adb shell input 命令
- cocos2d-x精灵自定义路径移动
- 网页右侧的漂浮广告代码,随滚动条滚动
- 每天必做的3件事
- 源码管理工具(SCM)之备忘
- Linux动态库的创建与使用
- cocos2d-x之滚动背景
- 开源算法库GMP的安装与调试