安卓之上传文件,即HTTP提交表单
获取文件:
public void Init()
{
noScrollgridview = (GridView) findViewById(R.id.noScrollgridview);
noScrollgridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
adapter = new GridAdapter(this);
adapter.update1();
noScrollgridview.setAdapter(adapter);
noScrollgridview.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
{
InputMethodManager imm = ( InputMethodManager ) arg1.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
imm.hideSoftInputFromWindow( arg1.getApplicationWindowToken( ) , 0 );
if (arg2 == Bimp.bmp.size())
{
new PopupWindows(PublishedActivity.this, noScrollgridview);
}
else
{
Intent intent = new Intent(PublishedActivity.this,
PhotoActivity.class);
intent.putExtra("ID", arg2);
startActivity(intent);
}
}
});
activity_selectimg_send = (Button) findViewById(R.id.activity_selectimg_send);
activity_selectimg_send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//showDialog("ddd");
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.permitNetwork().build());
List<String> list = new ArrayList<String>();
for (int i = 0; i < Bimp.drr.size(); i++)
{
String Str = Bimp.drr.get(i).substring(
Bimp.drr.get(i).lastIndexOf("/") + 1,
Bimp.drr.get(i).lastIndexOf("."));
list.add(FileUtils.SDPATH + Str + ".JPEG");
String path = Bimp.drr.get(i);
// showDialog(path);
// showDialog(getDataValue("_member_id"));
// showDialog(((TextView) findViewById(R.id.activity_selectxxx_send)).getText().toString());
String fileKey = "imgFile";
UploadUtil uploadUtil = UploadUtil.getInstance();;
uploadUtil.setOnUploadProcessListener(PublishedActivity.this); //设置监听器监听上传状态
Map<String, String> params = new HashMap<String, String>();
params.put("userid", getDataValue("_member_id"));
params.put("content", ((TextView) findViewById(R.id.activity_selectxxx_send)).getText().toString());
uploadUtil.uploadFile( path,fileKey, "http://shop.tminji.com/sns/SendAMessage",params);
//String x = ((TextView)v.findViewById(R.id.activity_selectxxx_send)).getText().toString();
//uploadFile(path);
}
// 高清的压缩图片全部就在 list 路径里面了
// 高清的压缩过的 bmp 对象 都在 Bimp.bmp里面
// 完成上传服务器后 .........
showDialog("发布成功^_^");
FileUtils.deleteDir();
// Intent intent = new Intent(PublishedActivity.this, MainActivity.class);
// Bundle bundle = new Bundle();
// /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/
// bundle.putString("Name", "feng88724");
// /*把bundle对象assign给Intent*/
//
// intent.setClass(PublishedActivity.this, MainActivity.class);
// intent.putExtras(bundle);
// startActivity(intent);
Intent intentx = new Intent(PublishedActivity.this, MainActivity.class);
/* 通过Bundle对象存储需要传递的数据 */
Bundle bundle = new Bundle();
/*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/
bundle.putString("Name", "feng88724");
/*把bundle对象assign给Intent*/
intentx.putExtras(bundle);
startActivity(intentx);
}});
}
上传文件
private void toUploadFile(File file, String fileKey, String RequestURL,
Map<String, String> param) {
String result = null;
requestTime= 0;
long requestTime = System.currentTimeMillis();
long responseTime = 0;
try {
URL url = new URL(RequestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(readTimeOut);
conn.setConnectTimeout(connectTimeout);
conn.setDoInput(true); // 允许输入流
conn.setDoOutput(true); // 允许输出流
conn.setUseCaches(false); // 不允许使用缓存
conn.setRequestMethod("POST"); // 请求方式
conn.setRequestProperty("Charset", CHARSET); // 设置编码
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
/**
* 当文件不为空,把文件包装并且上传
*/
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
StringBuffer sb = null;
String params = "";
/***
* 以下是用于上传参数
*/
if (param != null && param.size() > 0) {
Iterator<String> it = param.keySet().iterator();
while (it.hasNext()) {
sb = null;
sb = new StringBuffer();
String key = it.next();
String value = param.get(key);
sb.append(PREFIX).append(BOUNDARY).append(LINE_END);
sb.append("Content-Disposition: form-data; name=\"").append(key).append("\"").append(LINE_END).append(LINE_END);
sb.append(value).append(LINE_END);
params = sb.toString();
Log.i(TAG, key+"="+params+"##");
dos.write(params.getBytes());
//dos.flush();
}
}
sb = null;
params = null;
sb = new StringBuffer();
/**
* 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
* filename是文件的名字,包含后缀名的 比如:abc.png
*/
sb.append(PREFIX).append(BOUNDARY).append(LINE_END);
sb.append("Content-Disposition:form-data; name=\"" + fileKey
+ "\"; filename=\"" + file.getName() + "\"" + LINE_END);
sb.append("Content-Type:image/pjpeg" + LINE_END); // 这里配置的Content-type很重要的 ,用于服务器端辨别文件的类型的
sb.append(LINE_END);
params = sb.toString();
sb = null;
Log.i(TAG, file.getName()+"=" + params+"##");
dos.write(params.getBytes());
/**上传文件*/
InputStream is = new FileInputStream(file);
onUploadProcessListener.initUpload((int)file.length());
byte[] bytes = new byte[1024];
int len = 0;
int curLen = 0;
while ((len = is.read(bytes)) != -1) {
curLen += len;
dos.write(bytes, 0, len);
onUploadProcessListener.onUploadProcess(curLen);
}
is.close();
dos.write(LINE_END.getBytes());
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();
dos.write(end_data);
dos.flush();
//dos.write(tempOutputStream.toByteArray());
/**
* 获取响应码 200=成功 当响应成功,获取响应的流
*/
int res = conn.getResponseCode();
responseTime = System.currentTimeMillis();
this.requestTime = (int) ((responseTime-requestTime)/1000);
Log.e(TAG, "response code:" + res);
if (res == 200) {
Log.e(TAG, "request success");
InputStream input = conn.getInputStream();
StringBuffer sb1 = new StringBuffer();
int ss;
while ((ss = input.read()) != -1) {
sb1.append((char) ss);
}
result = sb1.toString();
Log.e(TAG, "result : " + result);
sendMessage(UPLOAD_SUCCESS_CODE, "上传结果:"
+ result);
return;
} else {
Log.e(TAG, "request error");
sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:code=" + res);
return;
}
} catch (MalformedURLException e) {
sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:error=" + e.getMessage());
e.printStackTrace();
return;
} catch (IOException e) {
sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:error=" + e.getMessage());
e.printStackTrace();
return;
}
}
转载于:https://www.cnblogs.com/luminji/p/4603630.html
安卓之上传文件,即HTTP提交表单相关推荐
- struts上传文件,验证失败表单数据丢失的原因
struts上传文件,验证失败表单数据丢失的原因 发现一个问题,使用struts进行文件上传,如果有些参数没有完全定义在ActionForm中,需要从request.getParameter获取,在表 ...
- robot—如何调用上传文件的接口,表单传值
1.通过evaluate创建一个元组对象,元组里的元素: A. 第一个元素是文件名 B. 第二个元素是一个文件对象, 通过open打开一个文件,函数里面 第一个参数值是文件的路径,这里传的绝对路径, ...
- JavaScript连载36-上传文件以及获取input表单焦点
一.表单标签焦点 <input type="text" placeholder="请输入姓名"><script>window.onloa ...
- 利用ajaxSubmit()方法实现Form提交表单后回调
1. 背景 最近在工作中,需要实现网页端图片上传到FTP服务器的功能.上传文件是用Form表单提交数据的方法向后台传输文件流,在此遇到了一个问题:后台在处理完图片上传功能后,需要向前台回传是 ...
- python网页提交表单_使用Python中的POST请求通过网站表单上传基本文件
我尝试使用Python和HTTP请求在一个随机的网站上上传一个文件.为此,我使用名为Requests的便利库. 根据the documentation,以及StackOverflow here和the ...
- AJAX 提交表单以及文件上传
本文转自:https://www.cnblogs.com/zhuxiaojie/p/4783939.html#autoid-0-0-0 作者:朱小杰 前言 使用ajax请求数据,很多人都会,比如说: ...
- 微信提交表单到服务器,微信小程序页面表单如何跟图片一起上传服务器
拆开写. 表单提交是 wx.request 上传图片是 wx.uploadFile 你需要写一个通用图片上传接口,上传图片后台返回图片的url.这个通用接口在任何需要提交图片的表单都可以用到. 添加图 ...
- php curl 发送checkbox,使用curl 提交表单(多维数组+文件)数据到服务器的有关问题...
使用curl 提交表单(多维数组+文件)数据到服务器的问题 我在本地搭了一个测试服务器,Apache+PHP,想使用curl自动提交表单数据到远程服务器. 远程服务器表单有两项数据需要提交: 1.in ...
- php form 上传_php+html5使用FormData对象提交表单及上传图片的方法
本文实例讲述了php+html5使用FormData对象提交表单及上传图片的方法.分享给大家供大家参考.具体分析如下: FormData 对象,可以把form中所有表单元素的name与value组成一 ...
最新文章
- WebView的截屏实现
- arm-linux学习笔记3-linux内存管理与文件操作
- 请列举你了解的分布式锁_终于搞懂分布式锁是什么了!
- 将DataSet中的操作更新到Access数据库
- Java异常分类及处理
- 56 MM配置-评估和科目设置-定义评估类
- 自定义Hibernate Validator规则注解
- IPC生产者与消费者模型加线程
- 微信小程序模板文件的引入
- oracle库客户端完整卸载,卸载Oracle数据库或客户端​
- 第18章 人口普查
- 【代码】求二叉树叶子结点的个数、递归方式
- 关于浏览器播放视频的些许理解
- Azure:云平台概述
- pom通过profile设置打包运行环境
- unity隐藏鼠标光标的2种方法
- 热修复 原理与实现详解
- #UVM# 关于多次TB中 include “uvm_macros.svh“的疑问篇
- 数学建模推国一最终省一经验总结
- 微信小程序菜品做法展示数据库设计_微信小程序结合后台数据管理实现商品数据的动态展示、维护...