package com.home.upload;
import java.io.file;
import java.nio.charset.charset;
import java.util.arraylist;
import java.util.list;
import org.apache.http.httpresponse;
import org.apache.http.client.httpclient;
import org.apache.http.client.methods.httppost;
import org.apache.http.entity.mime.multipartentity;
import org.apache.http.entity.mime.content.filebody;
import org.apache.http.entity.mime.content.stringbody;
import org.apache.http.impl.client.defaulthttpclient;
import org.apache.http.params.basichttpparams;
import org.apache.http.params.httpconnectionparams;
import org.apache.http.util.entityutils;
import android.app.activity;
import android.os.bundle;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
public class mainactivity extends activity implements onclicklistener {
private button uploadbtn;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
uploadbtn = (button) findviewbyid(r.id.main_btn);
uploadbtn.setonclicklistener(this);
}
public void onclick(view v) {
if (v == uploadbtn) {
final list<string> list = new arraylist<string>();
list.add("/storage/sdcard0/updateadtech/orgpic/1.png");
list.add("/storage/sdcard0/updateadtech/orgpic/2.png");
new thread() {
public void run() {
postmethod("just test", "sdcard/image/a.amr", list);
};
}.start();
}
/**
*
* @description: 上傳方法
* @param audiopath
* 上傳音頻檔案位址 例:sdcard/image/a.amr
* @param text
* 上傳文本的值
* @param imageurllist
* 圖檔位址的集合 例:sdcard/image/a.jpg, sdcard/image/b.jpg
* @return void
*/
private synchronized void postmethod(string text, string audiopath,
list<string> imageurllist) {
try {
string[] filepath = new string[imageurllist.size()];
int size = imageurllist.size();
for (int i = 0; i < size; i++) {
filepath[i] = imageurllist.get(i);
}
// 連結逾時,請求逾時設定
basichttpparams httpparams = new basichttpparams();
httpconnectionparams.setconnectiontimeout(httpparams, 10 * 1000);
httpconnectionparams.setsotimeout(httpparams, 10 * 1000);
// 請求參數設定
httpclient client = new defaulthttpclient(httpparams);
httppost post = new httppost(
"http://service.ireadhome.com/api/upload/image");
multipartentity entity = new multipartentity();
// 上傳 文本, 轉換編碼為utf-8 其中"text" 為字段名,
// 後邊new stringbody(text,
// charset.forname(charset))為參數值,其實就是正常的值轉換成utf-8的編碼格式
entity.addpart("text",
new stringbody(text, charset.forname("utf-8")));
// 上傳多個文本可以在此處添加上邊代碼,修改字段和值即可
// 上傳音頻檔案
entity.addpart("audio",
new filebody(new file(audiopath), "audio/*"));
// 上傳圖檔
for (string p : filepath) {
entity.addpart("fileimg", new filebody(new file(p), "image/*"));
post.setentity(entity);
httpresponse resp = client.execute(post);
// 擷取回調值
system.out.println("response:"
+ entityutils.tostring(resp.getentity()));
system.out.println("statuscode:"
+ resp.getstatusline().getstatuscode());
} catch (exception e) {
e.printstacktrace();
}