天天看點

檔案圖檔上傳

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();  

}  

下一篇: Java加載js