zoukankan      html  css  js  c++  java
  • Android 通过httppost上传文本文件到服务器。

    /**
         * 往服务器上上传文本  比如log日志
         * @param urlstr        请求的url   
         * @param uploadFile    log日志的路径  
         *                                    /mnt/shell/emulated/0/LOG/LOG.log    
         * @param newName        log日志的名字 LOG.log
         * @return
         */
        public static void httpPost(Activity activity,String urlstr,String uploadFile,String newName) {
            LogUtil.info("getEhttpPostt", "urlstr="+urlstr+";uploadFile="+uploadFile+";newName="+newName,"i");
            String end = "
    ";
            String twoHyphens = "--";
            String boundary = "*****";//边界标识 
            int TIME_OUT = 10*1000;   //超时时间
            HttpURLConnection con = null; 
            DataOutputStream ds = null; 
            InputStream is = null;
            try {
                URL url = new URL(urlstr);
                con = (HttpURLConnection) url.openConnection();
                con.setReadTimeout(TIME_OUT);
                con.setConnectTimeout(TIME_OUT);
                /* 允许Input、Output,不使用Cache */
                con.setDoInput(true);
                con.setDoOutput(true);
                con.setUseCaches(false);
     
                // 设置http连接属性
                con.setRequestMethod("POST");//请求方式
                con.setRequestProperty("Connection", "Keep-Alive");//在一次TCP连接中可以持续发送多份数据而不会断开连接
                con.setRequestProperty("Charset", "UTF-8");//设置编码
                con.setRequestProperty("Content-Type",//multipart/form-data能上传文件的编码格式
                        "multipart/form-data;boundary=" + boundary);
     
                ds = new DataOutputStream(con.getOutputStream());
                ds.writeBytes(twoHyphens + boundary + end);
                ds.writeBytes("Content-Disposition: form-data; "
                        + "name="stblog";filename="" + newName + """ + end);
                ds.writeBytes(end);
     
                // 取得文件的FileInputStream
                FileInputStream fStream = new FileInputStream(uploadFile);
                /* 设置每次写入1024bytes */
                int bufferSize = 1024;
                byte[] buffer = new byte[bufferSize];
                int length = -1;
                /* 从文件读取数据至缓冲区 */
                while ((length = fStream.read(buffer)) != -1) {
                    /* 将资料写入DataOutputStream中 */
                    ds.write(buffer, 0, length);
                }
                ds.writeBytes(end);
                ds.writeBytes(twoHyphens + boundary + twoHyphens + end);//结束
     
                fStream.close();
                ds.flush();
                /* 取得Response内容 */
                is = con.getInputStream();
                int ch;
                StringBuffer b = new StringBuffer();
                while ((ch = is.read()) != -1) {
                    b.append((char) ch);
                }
                /* 将Response显示于Dialog */
                showDialog(activity,true,uploadFile,"上传成功" + b.toString().trim());
            } catch (Exception e) {
                showDialog(activity,false,uploadFile,"上传失败" + e);
            }finally {
                 /* 关闭DataOutputStream */
                if(ds!=null){
                    try {
                     ds.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (con != null) {
                    con.disconnect();
                }
            }
        }
        /* 显示Dialog的method */
        private static void showDialog(final Activity activity,final Boolean isSuccess,final String uploadFile,final String mess) {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    new AlertDialog.Builder(activity).setTitle("Message")
                    .setMessage(mess)
                    .setNegativeButton("确定", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            File file = new File(uploadFile);
                            if(file.exists()&&isSuccess){//日志文件存在且上传日志成功
                                file.delete();
                                Toast.makeText(activity, "log日志已删除", Toast.LENGTH_SHORT).show();
                            }
                        }
                    }).show();
                }
            });
            
        }
  • 相关阅读:
    Python的优点和缺点
    如何在sed中使用变量方法及其简单
    shell脚本练习,创建数据文件注册用户并将用户信息存入文件内,用于模拟登录时使用
    shell脚本常用参数与格式
    运维方向和运维需要掌握的基本面
    linux系统awk命令精解
    数组去重方式
    原生js封装cookie获取、设置及删除
    sublime 浏览器快捷键设置
    background-image实现border效果及多图png如何实现background-size为原图一半
  • 原文地址:https://www.cnblogs.com/lipeineng/p/5731604.html
Copyright © 2011-2022 走看看