<address id="jv157"></address>
<sub id="jv157"></sub>

      <address id="jv157"></address>

      <thead id="jv157"></thead>

        Android上传文件到服务器(1)

        Android客户端经常有需要上传文件到服务器,国内的方法一般都是用非常底层的东西,创建一个HttpURLConnection,然后读取文件流,写到connection里,比如这个网址http://www.cnblogs.com/greatverve/archive/2011/12/23/android-upload.html上传文件:

        package com.spring.sky.image.upload.network;
        
        import java.io.DataOutputStream;
        import java.io.File;
        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.net.HttpURLConnection;
        import java.net.MalformedURLException;
        import java.net.URL;
        import java.util.UUID;
        
        import android.util.Log;
        
        /**
         * 
         * 上传工具类
         * @author spring sky
         * Email:vipa1888@163.com
         * QQ:840950105
         * MyName:石明政
         */
        public class UploadUtil {
            private static final String TAG = "uploadFile";
            private static final int TIME_OUT = 10*1000;   //超时时间
            private static final String CHARSET = "utf-8"; //设置编码
            /**
             * android上传文件到服务器
             * @param file  需要上传的文件
             * @param RequestURL  请求的rul
             * @return  返回响应的内容
             */
            public static String uploadFile(File file,String RequestURL)
            {
                String result = null;
                String  BOUNDARY =  UUID.randomUUID().toString();  //边界标识   随机生成
                String PREFIX = "--" , LINE_END = "\r\n"; 
                String CONTENT_TYPE = "multipart/form-data";   //内容类型
                
                try {
                    URL url = new URL(RequestURL);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setReadTimeout(TIME_OUT);
                    conn.setConnectTimeout(TIME_OUT);
                    conn.setDoInput(true);  //允许输入流
                    conn.setDoOutput(true); //允许输出流
                    conn.setUseCaches(false);  //不允许使用缓存
                    conn.setRequestMethod("POST");  //请求方式
                    conn.setRequestProperty("Charset", CHARSET);  //设置编码
                    conn.setRequestProperty("connection", "keep-alive");   
                    conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY); 
                    
                    if(file!=null)
                    {
                        /**
                         * 当文件不为空,把文件包装并且上传
                         */
                        DataOutputStream dos = new DataOutputStream( conn.getOutputStream());
                        StringBuffer sb = new StringBuffer();
                        sb.append(PREFIX);
                        sb.append(BOUNDARY);
                        sb.append(LINE_END);
                        /**
                         * 这里重点注意:
                         * name里面的值为服务器端需要key   只有这个key 才可以得到对应的文件
                         * filename是文件的名字,包含后缀名的   比如:abc.png  
                         */
                        
                        sb.append("Content-Disposition: form-data; name=\"img\"; filename=\""+file.getName()+"\""+LINE_END); 
                        sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);
                        sb.append(LINE_END);
                        dos.write(sb.toString().getBytes());
                        InputStream is = new FileInputStream(file);
                        byte[] bytes = new byte[1024];
                        int len = 0;
                        while((len=is.read(bytes))!=-1)
                        {
                            dos.write(bytes, 0, len);
                        }
                        is.close();
                        dos.write(LINE_END.getBytes());
                        byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();
                        dos.write(end_data);
                        dos.flush();
                        /**
                         * 获取响应码  200=成功
                         * 当响应成功,获取响应的流  
                         */
                        int res = conn.getResponseCode();  
                        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);
        //                }
        //                else{
        //                    Log.e(TAG, "request error");
        //                }
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return result;
            }
        }


        下面分享一个高级层面的方法:使用HttpMime上传文件。

        public static HttpResponse upload(String url, String fileName,  File file) throws ClientProtocolException, IOException{
        		
        		HttpClient client = new DefaultHttpClient();
        
        		HttpParams httpParam = client.getParams();
        		HttpConnectionParams.setConnectionTimeout(httpParam, 8000);
        		HttpConnectionParams.setSoTimeout(httpParam, 8000);
        
        		HttpPost request = new HttpPost(url);
        
        		MultipartEntity entity = new MultipartEntity();
        		entity.addPart(fileName, new FileBody(file));
        
        		request.setEntity(entity);
        
        		return client.execute(request, localContext);
        	}
        

        是不是非常简单?

        HttpMime的jar包下载地址http://www.java2s.com/Code/Jar/h/Downloadhttpmime412jar.htm, 大家可以导入到项目的Libraries里边,再在Order and Export勾选上里边的HttpMime。

        如果想上传文件的时候再POST参数,应该怎么办?没问题,上代码:

        public static HttpResponse upload(String url, String fileName,  File file, List<NameValuePair> params) throws ClientProtocolException, IOException{
        		
        		HttpClient client = new DefaultHttpClient();
        
        		HttpParams httpParam = client.getParams();
        		HttpConnectionParams.setConnectionTimeout(httpParam, 8000);
        		HttpConnectionParams.setSoTimeout(httpParam, 8000);
        
        		HttpPost request = new HttpPost(url);
        
        		MultipartEntity entity = new MultipartEntity();
        		entity.addPart(fileName, new FileBody(file));
        		
        		if (null != params) {
        for (int i = 0; i < params.size(); i++) {
        BasicNameValuePair param = (BasicNameValuePair) params.get(i);
        entity.addPart(param.getName(),
        new StringBody(param.getValue()));
        }
        }
        
        		request.setEntity(entity);
        
        		return client.execute(request, localContext);
        	}
        相关文章
        相关标签/搜索
        2020年正版综合资料 沙坪坝区| 大埔县| 太保市| 清徐县| 舒城县| 巴林左旗| 科技| 新巴尔虎右旗| 闽侯县| 绍兴市| 驻马店市| 渝北区| 乐都县| 桦南县| 平泉县| 修水县| 嘉峪关市| 循化| 留坝县| 嘉峪关市| 班玛县| 屏东市| 安泽县| 永安市| 富民县| 奉节县| 从化市| 泗洪县| 杭州市| 昌吉市| 揭阳市| 崇文区| 美姑县| 睢宁县| 德令哈市| 即墨市| 焦作市| 大竹县| 公安县| 金湖县| 铁岭县| 麻栗坡县| 黄石市| 鄂伦春自治旗| 昌邑市| 陈巴尔虎旗| 玉龙| 永丰县| 黔西| 二连浩特市| 酉阳| 泗阳县| 孟州市| 腾冲县| 库车县| 毕节市| 梓潼县| 黔江区| 大田县| 买车| 关岭| 扬州市| 观塘区| 常州市| 常熟市| 浮梁县| 吉安县| 额济纳旗| 泰来县| 巴林右旗| 莫力| 万全县| 贵溪市| 安化县| 永宁县| 峡江县| 西昌市| 平乐县| 堆龙德庆县| 阿克苏市| 新龙县| 利川市| 高州市| 宝山区| 若羌县| 亳州市| 特克斯县| 同仁县| 宁津县| 蓬安县| 苏州市| 淮安市| 承德市| 赣榆县| 肃宁县| 夹江县| 兴宁市| 都安| 桦甸市| 正阳县| 海城市| 大荔县| 克东县| 余庆县| 尖扎县| 桓台县| 青川县| 潮州市| 安陆市| 孝昌县| 无锡市| 新乡市| 颍上县| 龙门县| 乌鲁木齐市| 潼南县| 道真| 龙海市| 吉安市| 仙桃市| 平度市| 遂平县| 遵化市| 车险| 交口县| 工布江达县| 伊宁县| 遂昌县| 深圳市| 墨竹工卡县| 华安县| 乌拉特前旗| 化州市| 和林格尔县| 曲沃县| 麻栗坡县| 抚松县| 博野县| 醴陵市| 昌平区| 镇雄县| 久治县| 莱州市| 临桂县| 会理县| 阿鲁科尔沁旗| 鄂伦春自治旗| 太谷县| 林西县| 太原市| 延川县| 巩义市| 梨树县| 安平县| 广州市| 彰化市| 浮梁县| 中超| 礼泉县| 泽州县| 邳州市| 泰安市| 翼城县| 和政县| 宜州市| 黄浦区| 德清县| 彭州市| 平陆县| 保山市| 霍山县| 开化县| 丹江口市| 连云港市| 甘泉县| 江永县| 凤凰县| 大竹县| 波密县| 贵阳市| 西畴县| 柘城县| 九台市| 同德县| 平定县| 焦作市| 洛川县| 神木县| 清丰县| 石狮市| 含山县| 农安县| 礼泉县| 寻乌县| 衡山县| 伊金霍洛旗| 武强县| 商河县| 泾川县| 余江县| 长寿区| 略阳县| 拉萨市| 乡城县| 江达县| 石首市| 龙井市| 长白| 凤城市| 深水埗区| 永康市| 合江县| 静乐县| 陵川县| 盐亭县| 清镇市| 靖远县| 东辽县| 平果县| 堆龙德庆县| 康乐县| 青岛市| 伊金霍洛旗| 称多县| 南汇区| 武穴市| 乌什县| 西乌珠穆沁旗| 徐闻县| 贵德县| 乌拉特后旗| 巴东县| 白银市| 海伦市| 彰武县| 丹棱县| 抚远县| 卓尼县| 平江县| 西青区| 长沙县| 阿荣旗| 新安县| 忻城县| 永善县| 望都县| 铁力市| 东山县| 阿拉善左旗| 广汉市| 云阳县| 辽中县| 周至县| 永州市| 杭锦后旗| 望江县| 香格里拉县| 清丰县| 隆德县| 隆德县| 门头沟区| 松阳县| 吉首市| 抚州市| 涿鹿县| 萨嘎县| 临泉县| 青铜峡市| 寿宁县| 绵阳市| 额济纳旗| 名山县| 通州区| 涟源市| 普定县| 秦安县| 塔河县| 如东县| 珲春市| 利津县| 抚州市| 长沙市| 双辽市| 英德市| 西青区| 涡阳县| 徐闻县| 札达县| 兴海县| 迭部县| 武胜县| 武威市| 华亭县| 玉龙| 中方县| 孝义市| 丰都县| 仪征市| 靖远县| 宁陵县| 佛坪县| 石狮市| 海南省| 宜兰市| 安康市| 美姑县| 莱阳市| 屯留县| 盐亭县| 黄浦区| 永济市| 合川市| 抚顺市| 桑植县| 陇南市| 新巴尔虎左旗| 永春县| 木兰县| 丽水市| 内江市| 宜川县| 河源市| 北宁市| 文山县| 阿拉善左旗| 彩票| 苍山县| 正定县| 靖宇县| 灌南县| 鹤峰县| 陆丰市| 明星| 荣昌县| 安西县| 稻城县| 双流县| 林州市| 南通市| 新河县| 宜川县| 东源县| 衢州市| 东兰县| 米泉市| 连山| 苗栗市| 出国| 宣汉县| 靖西县| 方城县| 宜君县| 乐清市| 稻城县| 武穴市| 泰兴市| 奇台县| 长春市| 句容市| 南江县| 绥德县| 秦安县| 乾安县| 卓资县| 军事| 盈江县| 冕宁县| 咸丰县| 和龙市| 花莲县| 崇义县| 涪陵区| 鄂尔多斯市| 兰坪| 伊金霍洛旗| 宁武县| 双峰县| 贡觉县| 岐山县| 灵石县| 康保县| 措勤县| 云安县| 宝清县| 花莲市| 宜昌市| 图片| 根河市| 奉新县| 廉江市| 阳曲县| 响水县| 株洲县| 文昌市| 大关县| 柳林县| 大洼县| 西藏| 苍山县| 武平县| 都昌县| 呼玛县| 正安县| 抚州市| 阿克苏市| 盐城市| 虞城县| 高阳县| 蛟河市| 鹿邑县| 伊川县| 金沙县| 普格县| 昌都县| 荣昌县| 保靖县| 逊克县| 且末县| 德化县| 和龙市| 淄博市| 望谟县| 班玛县| 乌兰浩特市| 闵行区| 延津县| 五华县| 崇阳县| 瑞昌市| 烟台市| 天台县| 长阳| 高青县| 庆元县| 苏尼特左旗| 繁昌县| 南和县| 南溪县| 兴国县| 竹山县| 浪卡子县| 呼和浩特市| 汝阳县| 兴文县| 姚安县| 大方县| 龙里县| 苍梧县| 江山市| 尼玛县| 平泉县| 柘荣县| 尼玛县| 长治市| 鹤岗市| 新建县| 中牟县| 灵山县| 博白县| 嘉鱼县| 新郑市| 定兴县| 宜兰市| 远安县| 崇仁县| 志丹县| 霞浦县| 格尔木市| 南丰县| 达日县| 朝阳县| 揭东县| 张掖市| 满洲里市| 绩溪县| 大安市| 闸北区| 新乐市| 崇文区| 于田县| 绩溪县| 娱乐| 博爱县| 交城县| 安阳县| 略阳县| 宁陕县| 彰化市| 托克逊县| 霸州市| 互助| 新泰市| 宁阳县| 福鼎市| 调兵山市| 汉阴县| 太仓市| 东兰县| 乌恰县| 天台县| 民乐县| 张家港市| 色达县| 合水县| 安徽省| 中阳县| 壶关县| 永登县| 汉阴县| 丹巴县| 惠来县| 鄂伦春自治旗| 西城区| 绵竹市| 彰武县| 靖西县| 若尔盖县| 兴安盟| 鸡西市| 泰和县| 洮南市| 荆门市| 肇庆市| 伊川县| 南汇区| 迭部县| 资中县| 佳木斯市| 彭水| 永兴县| 昌平区| 来凤县| 什邡市| 正定县| 吉安县| 新干县| 陈巴尔虎旗| 林西县| 鄯善县| 巴楚县| 贵州省| 漳平市| 庄河市| 新平| 湖北省| 将乐县| 岳普湖县| 宁海县| 桓台县| 乌鲁木齐县| 万载县| 扶绥县| 礼泉县| 沛县| 油尖旺区| 深泽县| 灵武市| 夹江县| 邳州市| 化隆| 青阳县| 静乐县| 沈丘县| 湘西| 郴州市| 灵寿县| 邵阳市| 年辖:市辖区| 东海县| 怀集县| 朝阳区| 嘉义县| 常宁市| 乌海市| 武乡县| 云南省| 东丰县| 道孚县| 彰化市| 全椒县| 仁化县| 青龙| 论坛| 城固县| 大石桥市| 固镇县| 石门县| 韶山市| 永修县| 上杭县| 永吉县| 出国| 蒙自县| 临泉县| 伊吾县| 宁都县| 噶尔县| 台中县| 三河市| 沽源县| 阳泉市| 体育| 麦盖提县| 车险| 青海省| 宁陕县| 拉萨市| 威远县| 虹口区| 金川县| 九台市| 鹿邑县| 乌鲁木齐县| 十堰市| 洪雅县| http://jx1870fastv.fun http://m.jx1870fuckv.fun http://jx1870helpv.fun http://m.jx1870explorev.fun http://www.jx1870inchv.fun http://wap.jx1870housev.fun http://www.jx1870icev.fun http://www.hz0j2r8vo.fun http://m.jx1870guessv.fun http://www.hz0j4r2vo.fun http://www.jx1870hillv.fun http://m.jx1870increasev.fun http://jx1870evidencev.fun http://jx1870jackv.fun http://hz0j1r0vo.fun http://wap.jx1870finishv.fun http://www.jx1870izplezentv.fun http://m.jx1870estizatev.fun