解决方案 »
- 应用程序启动动画应该怎么做呢
- Android运行Hello world.....
- 如何创建一个始终显示在最前端的窗口,即使是切换到其他程序也始终显示在最前端?
- 求大神指点,本人想从java转Android
- 开发一个安卓音乐播放器,搜索用的内置百度网页,下载也是百度的,算不算侵权?
- 百度定位崩溃
- Antutu安兔兔测评怎么检测CPU的核心数?
- android彩信MMS 怎么能把pdu打包好的 smil和附件分开 我只想要附件部分的pdu
- 谁有中文 TTS 源码demo?
- 关于java语言的一个编译问题
- Android开发,关于手机蓝牙通过HID实现和蓝牙键盘的通信问题
- PhoneStateListener监听问题
我这里有一个多个文件上传的,你自己看看改成单个的上传吧。/**
* Copyright (C) 2013
* This file write by finger in 2014年11月1日,mail:[email protected]
*/
package com.ewell.mobile.gooddriving.common;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;import com.zjhcsoft.mobile.framework.bean.ImageFileInfo;
import com.zjhcsoft.mobile.framework.utils.StringUtils;/**
* 上传文件
*
* @author finger
* @version V1.0
*/
public class FileUploadAction extends AsyncTask<String, Integer, String> {
/** 上下文 */
// private Context context = null; /** 进度对话框 */
private ProgressDialog proDialog = null; /** 上传url */
private String url = ""; /** 文件列表 */
private List<ImageFileInfo> fileList = null; /** 已传送文件总大小 */
private long sumSize = 0; /**
* 构造函数
*
* @param context
* 上下文
* @param url
* 上传URL
* @param fileList
* 文件列表
*/
public FileUploadAction(Context context, String url,
List<ImageFileInfo> fileList) {
super();
// this.context = context;
this.url = url;
this.fileList = fileList;
proDialog = new ProgressDialog(context);
proDialog.setMessage("正在上传文件");
proDialog.setIndeterminate(false);
proDialog.setCancelable(false);
proDialog.setMax(fileList.size());
proDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
proDialog.show();
} /*
* (non Javadoc)<p>Title: doInBackground</p><p>Description: </p>
*
* @param arg0
*
* @return
*
* @see android.os.AsyncTask#doInBackground(java.lang.Object[])
*/
@Override
protected String doInBackground(String... params) {
// 文件传输交易
try {
String BOUNDARY = java.util.UUID.randomUUID().toString();
String PREFIX = "--", LINEND = "\r\n";
String MULTIPART_FROM_DATA = "multipart/form-data";
String CHARSET = "UTF-8";
URL uri = new URL(url);
HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000);
conn.setDoInput(true);// 允许输入
conn.setDoOutput(true);// 允许输出
conn.setUseCaches(false);
conn.setRequestMethod("POST"); // Post方式
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA
+ ";boundary=" + BOUNDARY);
DataOutputStream outStream = new DataOutputStream(
conn.getOutputStream());
// 发送文件数据
if (fileList != null && fileList.size() > 0)
for (int i = 0; i < fileList.size(); i++) {
StringBuilder sb = new StringBuilder();
sb.append(PREFIX);
sb.append(BOUNDARY);
sb.append(LINEND);
sb.append("Content-Disposition: form-data; name=\"file\"; filename=\""
+ fileList.get(i).getFileName() + "\"" + LINEND);
sb.append("Content-Type: application/octet-stream; charset="
+ CHARSET + LINEND);
sb.append(LINEND);
outStream.write(sb.toString().getBytes());
InputStream is = new FileInputStream(fileList.get(i)
.getFullPath());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
is.close();
outStream.write(LINEND.getBytes());
sumSize += fileList.get(i).getFileSize();
publishProgress(Long.valueOf(sumSize / 1024).intValue());
}
// 请求结束标志
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
outStream.write(end_data);
outStream.flush();
// 得到响应码
int res = conn.getResponseCode(); if (res == 200) {
InputStream in = conn.getInputStream();
InputStreamReader isReader = new InputStreamReader(in);
BufferedReader bufReader = new BufferedReader(isReader);
String line = null;
String resultStr = "";
while ((line = bufReader.readLine()) != null)
resultStr += line;
if (!StringUtils.isEmpty(resultStr)) {
// 返回xml
outStream.close();
conn.disconnect();
return resultStr;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
} /*
* (non Javadoc)<p>Title: onPostExecute</p><p>Description: </p>
*
* @param result
*
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
} /*
* (non Javadoc)<p>Title: onProgressUpdate</p><p>Description: </p>
*
* @param values
*
* @see android.os.AsyncTask#onProgressUpdate(java.lang.Object[])
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
}