获取文件:

public void Init()
    {
        noScrollgridview = (GridView) findViewById(R.id.noScrollgridview);
        noScrollgridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
        adapter = new GridAdapter(this);
        adapter.update1();
        noScrollgridview.setAdapter(adapter);
        noScrollgridview.setOnItemClickListener(new OnItemClickListener()
        {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3)
            {
                InputMethodManager imm = ( InputMethodManager ) arg1.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );  
                 imm.hideSoftInputFromWindow( arg1.getApplicationWindowToken( ) , 0 );  
                if (arg2 == Bimp.bmp.size())
                {
                    new PopupWindows(PublishedActivity.this, noScrollgridview);
                }
                else
                {
                    Intent intent = new Intent(PublishedActivity.this,
                            PhotoActivity.class);
                    intent.putExtra("ID", arg2);
                    startActivity(intent);
                }
            }
        });
        activity_selectimg_send = (Button) findViewById(R.id.activity_selectimg_send);
        activity_selectimg_send.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

//showDialog("ddd");
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
        .permitNetwork().build());

List<String> list = new ArrayList<String>();
        for (int i = 0; i < Bimp.drr.size(); i++)
        {
            String Str = Bimp.drr.get(i).substring(
                    Bimp.drr.get(i).lastIndexOf("/") + 1,
                    Bimp.drr.get(i).lastIndexOf("."));
            list.add(FileUtils.SDPATH + Str + ".JPEG");
            String path = Bimp.drr.get(i);
//            showDialog(path);
//            showDialog(getDataValue("_member_id"));
//            showDialog(((TextView) findViewById(R.id.activity_selectxxx_send)).getText().toString());
            String fileKey = "imgFile"; 
                   UploadUtil uploadUtil = UploadUtil.getInstance();; 
                  uploadUtil.setOnUploadProcessListener(PublishedActivity.this);  //设置监听器监听上传状态 
                   Map<String, String> params = new HashMap<String, String>(); 
                   params.put("userid", getDataValue("_member_id")); 
                   params.put("content", ((TextView) findViewById(R.id.activity_selectxxx_send)).getText().toString()); 
                   uploadUtil.uploadFile( path,fileKey, "http://shop.tminji.com/sns/SendAMessage",params);

//String x = ((TextView)v.findViewById(R.id.activity_selectxxx_send)).getText().toString();
            //uploadFile(path);
        }
        // 高清的压缩图片全部就在 list 路径里面了
        // 高清的压缩过的 bmp 对象 都在 Bimp.bmp里面
        // 完成上传服务器后 .........
        showDialog("发布成功^_^");
        FileUtils.deleteDir();
//        Intent intent = new Intent(PublishedActivity.this, MainActivity.class);
//        Bundle bundle = new Bundle(); 
//        /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/ 
//        bundle.putString("Name", "feng88724"); 
//        /*把bundle对象assign给Intent*/ 
//       
//        intent.setClass(PublishedActivity.this, MainActivity.class);
//        intent.putExtras(bundle); 
//        startActivity(intent);
        Intent intentx = new Intent(PublishedActivity.this, MainActivity.class); 
        /* 通过Bundle对象存储需要传递的数据 */ 
        Bundle bundle = new Bundle(); 
        /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/ 
        bundle.putString("Name", "feng88724"); 
        /*把bundle对象assign给Intent*/ 
        intentx.putExtras(bundle); 
        startActivity(intentx); 
        }});
    }

上传文件

private void toUploadFile(File file, String fileKey, String RequestURL,
        Map<String, String> param) {
    String result = null;
    requestTime= 0;
    long requestTime = System.currentTimeMillis();
    long responseTime = 0;

try {
        URL url = new URL(RequestURL);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(readTimeOut);
        conn.setConnectTimeout(connectTimeout);
        conn.setDoInput(true); // 允许输入流
        conn.setDoOutput(true); // 允许输出流
        conn.setUseCaches(false); // 不允许使用缓存
        conn.setRequestMethod("POST"); // 请求方式
        conn.setRequestProperty("Charset", CHARSET); // 设置编码
        conn.setRequestProperty("connection", "keep-alive");
        conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
        conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
        //conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        /**
         * 当文件不为空,把文件包装并且上传
         */
        DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
        StringBuffer sb = null;
        String params = "";
        /***
         * 以下是用于上传参数
         */
        if (param != null && param.size() > 0) {
            Iterator<String> it = param.keySet().iterator();
            while (it.hasNext()) {
                sb = null;
                sb = new StringBuffer();
                String key = it.next();
                String value = param.get(key);
                sb.append(PREFIX).append(BOUNDARY).append(LINE_END);
                sb.append("Content-Disposition: form-data; name=\"").append(key).append("\"").append(LINE_END).append(LINE_END);
                sb.append(value).append(LINE_END);
                params = sb.toString();
                Log.i(TAG, key+"="+params+"##");
                dos.write(params.getBytes());
                //dos.flush();
            }
        }
        sb = null;
        params = null;
        sb = new StringBuffer();
        /**
         * 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
         * filename是文件的名字,包含后缀名的 比如:abc.png
         */
        sb.append(PREFIX).append(BOUNDARY).append(LINE_END);
        sb.append("Content-Disposition:form-data; name=\"" + fileKey
                + "\"; filename=\"" + file.getName() + "\"" + LINE_END);
        sb.append("Content-Type:image/pjpeg" + LINE_END); // 这里配置的Content-type很重要的 ,用于服务器端辨别文件的类型的
        sb.append(LINE_END);
        params = sb.toString();
        sb = null;
        Log.i(TAG, file.getName()+"=" + params+"##");
        dos.write(params.getBytes());
        /**上传文件*/
        InputStream is = new FileInputStream(file);
        onUploadProcessListener.initUpload((int)file.length());
        byte[] bytes = new byte[1024];
        int len = 0;
        int curLen = 0;
        while ((len = is.read(bytes)) != -1) {
            curLen += len;
            dos.write(bytes, 0, len);
            onUploadProcessListener.onUploadProcess(curLen);
        }
        is.close();
        dos.write(LINE_END.getBytes());
        byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();
        dos.write(end_data);
        dos.flush();
        //dos.write(tempOutputStream.toByteArray());
        /**
         * 获取响应码 200=成功 当响应成功,获取响应的流
         */
        int res = conn.getResponseCode();
        responseTime = System.currentTimeMillis();
        this.requestTime = (int) ((responseTime-requestTime)/1000);
        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);
            sendMessage(UPLOAD_SUCCESS_CODE, "上传结果:"
                    + result);
            return;
        } else {
            Log.e(TAG, "request error");
            sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:code=" + res);
            return;
        }
    } catch (MalformedURLException e) {
        sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:error=" + e.getMessage());
        e.printStackTrace();
        return;
    } catch (IOException e) {
        sendMessage(UPLOAD_SERVER_ERROR_CODE,"上传失败:error=" + e.getMessage());
        e.printStackTrace();
        return;
    }
}

安卓之上传文件,即HTTP提交表单的更多相关文章

  1. Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)

    Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...

  2. ssi-uploader上传图片插件,点击选择文件按钮自动提交表单解决办法

    先介绍一下这款插件,然后再谈使用中可能遇到的问题 ssi-uploader是一个JQuery的图片上传插件,界面比较美观 github地址:https://github.com/ssbeefeater ...

  3. 关于php上传文件过大的表单回填

    也许标题有点绕口,有点无法让人理解.请原谅博主,语文学的不好,都赖体育老师. 问题场景重现:在某次迭代中,接到这样一个需求:当新建或编辑一个Bug(包含附件以及其他字段)上传附件过大时,退回到编辑页面 ...

  4. ajax上传文件 基于jquery form表单上传文件

    <script src="/static/js/jquery.js"></script><script> $("#reg-btn&qu ...

  5. JSP SMARTUPLOAD组件:上传文件时同时获取表单参数

    原因很简单: 注意更改from 属性啊!否则为null! 因为你用jspsmartuploadsmart时post请求 的格式是multipart/form-data,即enctype="m ...

  6. Java工具之上传文件

    4个代码 1.前端JSP 2.自定义异常类 3.文件上传抽象类 4.Servlet 1.JSP <%@ page contentType="text/html;charset=UTF- ...

  7. Java Web之上传文件

    本篇文章你会学到 1. Apache FileUpload组件 2.上传文件保存的路径和名称问题 3.缓存大小和临时目录 4.控制文件上传的格式 先讲一个简单的例子,一个注册页面,有账号,邮箱,和头像 ...

  8. 利用ajaxSubmit()方法实现Form提交表单后回调

    1.      背景 最近在工作中,需要实现网页端图片上传到FTP服务器的功能.上传文件是用Form表单提交数据的方法向后台传输文件流,在此遇到了一个问题:后台在处理完图片上传功能后,需要向前台回传是 ...

  9. 4 django系列之HTML通过form标签来同时提交表单内容与上传文件

    preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ...

随机推荐

  1. 权限管理UI

    vue+vuex+vue-router+EF的权限管理系统 演示网站 首先说下这个项目吧.如标题一样是基于VUE+.NET开发的框架,也是群友一直吼吼吼要一个vue版本的ABP框架.我们先来看看首页吧 ...

  2. caffe之solver.prototxt文件参数设置

    caffe solver参数意义与设置 batchsize:每迭代一次,网络训练图片的数量,例如:如果你的batchsize=256,则你的网络每迭代一次,训练256张图片:则,如果你的总图片张数为1 ...

  3. 003.KVM虚拟机部署-CentOS6.8

    一 实验说明 CentOS 7的KVM虚拟机推荐使用qcow2磁盘格式,本实验在KVM中安装CentOS 6.8 64虚拟机. 二 命令部署过程 2.1 上传镜像 使用winscp上传至/data/i ...

  4. Harbor 企业级镜像仓库搭建

    Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的 企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角 ...

  5. Vue父子组件之间通信

    1.父 -> 子.通过props //father.vue <template> <div id="father"> <div><l ...

  6. canvas入门级小游戏《开关灯》思路讲解

    游戏很简单,10行10列布局,每行每列各10盏灯,游戏初始化时随机点亮其中一些灯,点击某盏灯,其上下左右的灯及本身状态反转,如果点击前是灭着的,点击后即点亮,将所有灯全部点亮才算过关.游戏试玩: 下面 ...

  7. ApiPost自动化测试基础之:接口参数依赖的情景处理

    在<ApiPost环境变量之第1课>里,我们介绍了什么是ApiPost环境变量,并如何定义.使用它. 环境变量.接口参数依赖的处理是ApiPost自动化测试的基础.本文主要讲解接口参数依赖 ...

  8. 开发自己的山寨Android注解框架

    目录 开发自己的山寨Android注解框架 开发自己的山寨Android注解框架 参考 Github黄油刀 Overview 在上一章我们学习了Java的注解(Annotation),但是我想大家可能 ...

  9. Django Model._meta API

    Model._meta API是Django ORM的核心,它使得lookups.queries.forms.admin这些模块通过每个model类的_meta的属性可以了解每个model的情况. 1 ...

  10. SNOI 滚粗记

    连睡觉都只能睡一半就吓醒 真的蠢 CE了四道 没有cstring 踏马本机怎么能过??!! 还有几次夏令营什么的 可能水水就结束了 最单纯的拿点优惠的想法也没实现 都说以后会有用的 大概是吧 也大概是 ...