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();
            }
        });
        
    }
原文地址:https://www.cnblogs.com/lipeineng/p/5731604.html