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

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

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

        android 上传文件到服务器

        android对于上传文件,还是很简单的,和java里面的上传都是一样的,基本上都是熟悉操作输出流和输入流!还有一个特别重要的就是需要一些content-type这些参数的配置!  如果这些都弄好了,上传就很简单了!   下面是我写的一个上传的工具类:

        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 www.2cto.com
         * 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; 
            } 

         
        参数就一个File文件和一个请求上传的URL,不过需要注意的是   ,因为需要用到了网络请求,所以大家可不要忘记在上传的时候,给android客户端加一个访问王珞丹呃权限哦!  
         还有一点就是需要大家注意一下:本人是做服务器端javaEE的,我发现在上传的过程中,如果文件的标识name是java关键字之类的,上传过程中,会存在很多位置的问题的!所以大家经可能的不要使用关键字哦!

        下面是Activity的代码:

        package com.spring.sky.image.upload; 
         
         
        import java.io.File; 
         
        import com.spring.sky.image.upload.network.UploadUtil; 
         
        import android.app.Activity; 
        import android.app.AlertDialog; 
        import android.app.Dialog; 
        import android.content.ContentResolver; 
        import android.content.DialogInterface; 
        import android.content.Intent; 
        import android.database.Cursor; 
        import android.graphics.Bitmap; 
        import android.graphics.BitmapFactory; 
        import android.net.Uri; 
        import android.os.Bundle; 
        import android.provider.MediaStore; 
        import android.util.Log; 
        import android.view.View; 
        import android.view.View.OnClickListener; 
        import android.widget.Button; 
        import android.widget.ImageView; 
        /**
         * Activity 上传的界面
         * @author spring sky
         * Email:vipa1888@163.com
         * QQ:840950105
         * MyName:石明政
         *
         */ 
        public class MainActivity extends Activity implements OnClickListener{ 
            private static final String TAG = "uploadImage"; 
            private static String requestURL = "http://192.168.1.14:8080/SetBlobData/img!up"; 
            private Button selectImage,uploadImage; 
            private ImageView imageView; 
             
            private String picPath = null; 
             
            /** Called when the activity is first created. */ 
            @Override 
            public void onCreate(Bundle savedInstanceState) { 
                super.onCreate(savedInstanceState); 
                setContentView(R.layout.main); 
                 
                selectImage = (Button) this.findViewById(R.id.selectImage); 
                uploadImage = (Button) this.findViewById(R.id.uploadImage); 
                selectImage.setOnClickListener(this); 
                uploadImage.setOnClickListener(this); 
                 
                imageView = (ImageView) this.findViewById(R.id.imageView); 
                 
                 
            } 
             
            @Override 
            public void onClick(View v) { 
                switch (v.getId()) { 
                case R.id.selectImage: 
                    /***
                     * 这个是调用android内置的intent,来过滤图片文件   ,同时也可以过滤其他的  
                     */ 
                    Intent intent = new Intent(); 
                    intent.setType("image/*"); 
                    intent.setAction(Intent.ACTION_GET_CONTENT); 
                    startActivityForResult(intent, 1); 
                    break; 
                case R.id.uploadImage: 
                    File file = new File(picPath); 
                    if(file!=null) 
                    { 
                        String request = UploadUtil.uploadFile( file, requestURL); 
                        uploadImage.setText(request); 
                    } 
                    break; 
                default: 
                    break; 
                } 
            } 
         
            @Override 
            protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
                if(resultCode==Activity.RESULT_OK) 
                { 
                    /** 
                     * 当选择的图片不为空的话,在获取到图片的途径   
                     */ 
                    Uri uri = data.getData(); 
                    Log.e(TAG, "uri = "+ uri); 
                    try { 
                        String[] pojo = {MediaStore.Images.Media.DATA}; 
                         
                        Cursor cursor = managedQuery(uri, pojo, null, null,null); 
                        if(cursor!=null) 
                        { 
                            ContentResolver cr = this.getContentResolver(); 
                            int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
                            cursor.moveToFirst(); 
                            String path = cursor.getString(colunm_index); 
                            /***
                             * 这里加这样一个判断主要是为了第三方的软件选择,比如:使用第三方的文件管理器的话,你选择的文件就不一定是图片了,这样的话,我们判断文件的后缀名
                             * 如果是图片格式的话,那么才可以   
                             */ 
                            if(path.endsWith("jpg")||path.endsWith("png")) 
                            { 
                                picPath = path; 
                                Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri)); 
                                imageView.setImageBitmap(bitmap); 
                            }else{alert();} 
                        }else{alert();} 
                         
                    } catch (Exception e) { 
                    } 
                } 
                 
                super.onActivityResult(requestCode, resultCode, data); 
            } 
             
            private void alert() 
            { 
                Dialog dialog = new AlertDialog.Builder(this) 
                .setTitle("提示") 
                .setMessage("您选择的不是有效的图片") 
                .setPositiveButton("确定", 
                        new DialogInterface.OnClickListener() { 
                            public void onClick(DialogInterface dialog, 
                                    int which) { 
                                picPath = null; 
                            } 
                        }) 
                .create(); 
                dialog.show(); 
            } 
             

        layout代码:

        <?xml version="1.0" encoding="utf-8"?> 
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
            android:orientation="vertical" 
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent" 
            > 
            <Button   
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:text="选择图片" 
            android:id="@+id/selectImage" 
            /> 
            <Button   
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:text="上传图片" 
            android:id="@+id/uploadImage" 
            /> 
             <ImageView   
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:id="@+id/imageView" 
            /> 
        </LinearLayout> 

         
        以上就是android 上传图片的全部代码,如果想上传其他文件的话,可以修改过滤条件就可以了,同时文件的类型一定要和服务器端的文件类型保持一致,否则上传就失败了!
        如果大家还有在使用过程中,发现有什么问题可以联系我!
        学习在于积累!

        摘自 spring sky

        相关文章
        相关标签/搜索
        2020年正版综合资料 汝南县| 古丈县| 明星| 长宁县| 镇康县| 五原县| 镶黄旗| 宜都市| 沙湾县| 阜新市| 龙游县| 灵石县| 大余县| 奈曼旗| 山阴县| 垫江县| 神农架林区| 星子县| 上高县| 兴国县| 郧西县| 广东省| 平果县| 永嘉县| 洪洞县| 汤原县| 隆昌县| 柞水县| 云和县| 夏河县| 阳曲县| 津南区| 峨眉山市| 虎林市| 呼伦贝尔市| 南漳县| 浦城县| 海南省| 龙岩市| 温泉县| 敦煌市| 丹寨县| 赣州市| 元朗区| 高唐县| 巴马| 新津县| 宁蒗| 密云县| 怀安县| 西乌珠穆沁旗| 泽普县| 堆龙德庆县| 棋牌| 克山县| 广河县| 灵寿县| 高台县| 肃宁县| 阳新县| 弥勒县| 台南县| 图木舒克市| 永春县| 黄石市| 和龙市| 昌乐县| 武安市| 南溪县| 和田县| 迁安市| 京山县| 夏河县| 柳林县| 贵港市| 涟源市| 永定县| 全椒县| 闸北区| 兴海县| 大冶市| 抚宁县| 梧州市| 福建省| 岱山县| 临西县| 广宗县| 邮箱| 凉城县| 承德市| 赣榆县| 三明市| 咸宁市| 海兴县| 湘潭县| 五台县| 宜君县| 营口市| 肥城市| 淮阳县| 平利县| 加查县| 芒康县| 太康县| 巴彦县| 新闻| 连平县| 曲沃县| 洞口县| 弥勒县| 石泉县| 台南县| 定兴县| 公主岭市| 聂拉木县| 来安县| 丹江口市| 新野县| 濮阳县| 苍溪县| 敦煌市| 郁南县| 阿尔山市| 新河县| 安顺市| 建德市| 凤山县| 镇远县| 霍州市| 呼和浩特市| 新郑市| 牡丹江市| 鲁山县| 建德市| 安宁市| 江山市| 巴塘县| 赤城县| 诸城市| 湟中县| 洛川县| 荣昌县| 南川市| 周口市| 娄底市| 缙云县| 泾川县| 枣阳市| 汽车| 正蓝旗| 屯昌县| 沂源县| 台江县| 喀什市| 鱼台县| 宜章县| 三台县| 龙南县| 永和县| 蓝田县| 惠水县| 丽水市| 木里| 馆陶县| 景德镇市| 德江县| 湖州市| 松潘县| 深水埗区| 永昌县| 望江县| 松溪县| 黎平县| 铜川市| 镇雄县| 唐河县| 溧阳市| 九台市| 财经| 兰溪市| 蒙自县| 陆川县| 故城县| 天长市| 阳信县| 柳江县| 甘洛县| 玛沁县| 宁河县| 聂拉木县| 如皋市| 莎车县| 崇左市| 焦作市| 大同市| 新乡县| 东乡| 乌鲁木齐县| 河池市| 洛隆县| 沙河市| 抚松县| 浦县| 牡丹江市| 定边县| 工布江达县| 舒兰市| 普洱| 汤原县| 伊吾县| 泌阳县| 三江| 嘉义市| 蒙阴县| 罗江县| 虹口区| 利辛县| 崇仁县| 沁阳市| 丰都县| 甘洛县| 安顺市| 沅江市| 新宁县| 磐石市| 贡山| 闽侯县| 酉阳| 调兵山市| 锡林浩特市| 墨江| 隆子县| 安国市| 寻甸| 乐至县| 岚皋县| 扶绥县| 安福县| 罗田县| 钟祥市| 齐河县| 元江| 浮梁县| 德江县| 鄂伦春自治旗| 泸水县| 鄂托克前旗| 喀喇| 夏邑县| 海南省| 镇康县| 腾冲县| 江津市| 孝感市| 鄂伦春自治旗| 唐海县| 榕江县| 南昌市| 榆社县| 南澳县| 札达县| 呼伦贝尔市| 白银市| 呼伦贝尔市| 金阳县| 博湖县| 民丰县| 郁南县| 蓝山县| 胶州市| 洞头县| 迁西县| 天等县| 磐安县| 龙里县| 永清县| 上高县| 吴堡县| 闵行区| 武宣县| 镇坪县| 吴忠市| 教育| 湄潭县| 南川市| 青铜峡市| 浏阳市| 铜陵市| 墨江| 古丈县| 尼勒克县| 抚顺市| 赤水市| 车险| 师宗县| 长治市| 靖江市| 象州县| 思茅市| 宁陕县| 浦北县| 枣庄市| 安泽县| 辛集市| 城口县| 宁国市| 丘北县| 天长市| 吉木萨尔县| 英吉沙县| 鞍山市| 商水县| 广河县| 成安县| 三门县| 武夷山市| 诸城市| 常德市| 郴州市| 临清市| 天长市| 西平县| 会昌县| 科技| 肇东市| 南木林县| 佛教| 新绛县| 长兴县| 莒南县| 邵阳市| 济南市| 化州市| 谷城县| 崇州市| 蕲春县| 溧阳市| 和硕县| 桐柏县| 乃东县| 胶南市| 筠连县| 永安市| 拉孜县| 射阳县| 镇远县| 桃园县| 天气| 葵青区| 榆中县| 七台河市| 巴楚县| 大新县| 麻城市| 河南省| 南安市| 亚东县| 嘉兴市| 长顺县| 保德县| 楚雄市| 黎城县| 浦东新区| 宜阳县| 潮州市| 眉山市| 天全县| 全州县| 远安县| 崇仁县| 长春市| 山阳县| 乐清市| 阿克| 集贤县| 永川市| 开原市| 沅江市| 丽江市| 玛曲县| 同德县| 阿合奇县| 广南县| 武冈市| 黑水县| 兴城市| 仲巴县| 绩溪县| 东丽区| 甘泉县| 景德镇市| 那坡县| 黔南| 赤城县| 睢宁县| 普安县| 多伦县| 巴林右旗| 灌云县| 铁岭县| 且末县| 新乡市| 肇州县| 岚皋县| 清远市| 霍林郭勒市| 灵丘县| 文登市| 昌宁县| 大同市| 清流县| 罗平县| 孝昌县| 江北区| 靖远县| 乌拉特中旗| 眉山市| 武定县| 武鸣县| 醴陵市| 枞阳县| 咸阳市| 和龙市| 酒泉市| 宿松县| 通江县| 和龙市| 安阳县| 尉犁县| 卢氏县| 连州市| 云浮市| 禹州市| 措勤县| 鄯善县| 无极县| 巩留县| 景宁| 同德县| 岳阳市| 屯留县| 黄石市| 乌鲁木齐市| 郯城县| 贵德县| 尉犁县| 资讯| 海宁市| 阳城县| 广灵县| 河曲县| 白沙| 十堰市| 杨浦区| 巩留县| 庄浪县| 宁德市| 容城县| 佛山市| 日喀则市| 安吉县| 永修县| 长宁县| 武威市| 普格县| 泽库县| 祥云县| 揭西县| 吉水县| 娱乐| 老河口市| 奈曼旗| 天全县| 仪征市| 外汇| 资源县| 合作市| 左权县| 广宁县| 汾阳市| 大悟县| 普定县| 白河县| 张掖市| 日土县| 科尔| 梓潼县| 张家港市| 长阳| 新建县| 疏勒县| 青州市| 岳普湖县| 旌德县| 佛冈县| 巩留县| 滦平县| 沾化县| 宣汉县| 绿春县| 平塘县| 桑日县| 理塘县| 色达县| 商丘市| 高平市| 新泰市| 西贡区| 内乡县| 土默特左旗| 通海县| 江源县| 边坝县| 汪清县| 昌乐县| 湟源县| 新乐市| 开原市| 西丰县| 徐水县| 吴忠市| 资源县| 慈溪市| 永靖县| 永新县| 南郑县| 利津县| 墨竹工卡县| 广昌县| 江华| 山阴县| 婺源县| 德江县| 永仁县| 读书| 突泉县| 禄劝| 白朗县| 且末县| 宝鸡市| 洪泽县| 和静县| 山东省| 井研县| 大安市| 廊坊市| 巴东县| 高雄市| 鹿泉市| 阳泉市| 泰宁县| 京山县| 吉安县| 诏安县| 绍兴市| 兴安盟| 朝阳区| 花莲县| 铜梁县| 慈溪市| 北宁市| 炎陵县| 屯留县| 汉寿县| 年辖:市辖区| 平湖市| 远安县| 靖西县| 桃江县| 茂名市| 池州市| 枞阳县| 秦皇岛市| 乌海市| 鸡泽县| 天柱县| 准格尔旗| 古浪县| 五莲县| 乌恰县| 永定县| 平舆县| 永胜县| 新晃| 道真| 故城县| 松原市| 赣榆县| 秦皇岛市| 西贡区| 石河子市| 图木舒克市| 中西区| 化州市| 黎城县| 阿拉尔市| 屯昌县| 敦化市| 宾川县| 苏尼特右旗| 武胜县| 历史| 苏尼特左旗| 怀集县| 祥云县| 北川| 海原县| 昭通市| 大埔县| 内黄县| 赤峰市| 宜川县| 汕尾市| 乌拉特前旗| 平潭县| http://www.jx1870havev.fun http://wap.jx1870engineerv.fun http://jx1870jazzv.fun http://www.jx1870factorv.fun http://m.hz0j0r5vo.fun http://www.jx1870inputv.fun http://m.jx1870harryv.fun http://m.jx1870hopev.fun http://www.jx1870insertv.fun http://www.jx1870icev.fun http://m.jx1870izpactv.fun http://m.hz0j2r8vo.fun http://hz0j2r4vo.fun http://m.jx1870fatv.fun http://www.jx1870leaguev.fun http://wap.jx1870factorv.fun http://www.jx1870flyv.fun http://m.jx1870guaranteev.fun