文档章节

android 文件上传类

jingshishengxu
 jingshishengxu
发布于 2016/05/16 10:10
字数 317
阅读 33
收藏 0
点赞 2
评论 0

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MyHttpClient {
    private URL url;
    private String host="";
    private String referer="";
    private HttpURLConnection con;
    private OutputStream os;
    private String delimiter = "--";
    private String boundary =  "APP"+Long.toString(System.currentTimeMillis())+"ANDROID";
    public MyHttpClient(String url) throws MalformedURLException {                
        this.url=new URL(url);
        host=this.url.getHost();
        referer=url;
    }
    public void connect4Multipart() throws Exception {        
        con = (HttpURLConnection) url.openConnection();        
        con.setRequestMethod("POST");
        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);        
        con.setRequestProperty("Charset", "iso-8859-1");
        con.setRequestProperty("connection", "keep-alive");        
        con.setRequestProperty("Referer", referer);
        con.setRequestProperty(
                "User-Agent",
                "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.6) Gecko/20100625   Firefox/3.6.6 Greatwqs");        
        con.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.5");
        con.setRequestProperty("Host", host);
        con.setRequestProperty("Accept-Charset",
                "ISO-8859-1,utf-8;q=0.7,*;q=0.7");        
        con.connect();        
        os = con.getOutputStream();
    }

    public void addFormPart(String paramName, String value) throws Exception {
        writeParamData(paramName, value);
    }    

    public void addFilePart(String paramName, String fileName, String path) throws Exception {
        os.write( (delimiter + boundary + "\r\n").getBytes());
        os.write( ("Content-Disposition: form-data; name=\"" + paramName +  "\"; filename=\"" + fileName + "\"\r\n"  ).getBytes());
        os.write( ("Content-Type: application/octet-stream\r\n"  ).getBytes());
        os.write( ("Content-Transfer-Encoding: binary\r\n"  ).getBytes());
        os.write("\r\n".getBytes());
        File f = new File(path);
        FileInputStream fis=new FileInputStream(f);
        byte[] buf=new byte[1024];
        while(true){
            int len=fis.read(buf);
            if(len>0){
                os.write(buf, 0, len);
            }else{
                break;
            }
        }
        fis.close();
        os.write("\r\n".getBytes());
    }

    public void finishMultipart() throws Exception {
        os.write( (delimiter + boundary + delimiter + "\r\n").getBytes());
        os.flush();
        os.close();
    }
   
    
    public String getResponse() throws Exception {
        InputStream is = con.getInputStream();
        byte[] b1 = new byte[1024];
        StringBuilder buffer = new StringBuilder();        
        while ( is.read(b1) != -1){
            buffer.append(new String(b1));
        }        
        con.disconnect();
        String rst=buffer.toString();
        return rst;
    }
   
    private void writeParamData(String paramName, String value) throws Exception {        
        os.write( (delimiter + boundary + "\r\n").getBytes());
        os.write( "Content-Type: text/plain\r\n".getBytes());
        os.write( ("Content-Disposition: form-data; name=\"" + paramName + "\"\r\n").getBytes());;
        os.write( ("\r\n" + value + "\r\n").getBytes());        
    }
}

 

© 著作权归作者所有

共有 人打赏支持
jingshishengxu
粉丝 69
博文 465
码字总数 49288
作品 0
杭州
部门经理
笔记67 | 记录从android stuido传代码到github的学习过程

前言 github是全球最好的一个管理代码的网站,用于迭代更新项目代码,本片记录学习从android stuido传上传代码到github过程; 准备 需要在你的电脑上安装git版本控制系统。如Git GUI; 在git...

项勇
04/11
0
0
Android 完美的水平方向滑动ListView

在Android开发 中,经常会要用到水平水平ListView(HorizontalListView),但是,Android 官方并没有提供这样一个控件, 所以在这里我给大家分享一下我在项目中用到的一个水平水平ListView,非常好用...

柳絮飘飞
2015/03/14
0
2
开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start

1启动界面的布局文件为appstart.xml ,对应的类文件为net.oschina.app 包下的AppStart.java。 2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背景图片。因为是启动界面,...

姬鑫
2015/05/18
0
12
每周总结20130821——android控件的尺寸、http文件上传

Android控件的尺寸 android开发中,可以通过编写XML格式的布局文件来实现布局,也可以用纯代码进行布局,通常都是选择XML文件布局。在XML布局文件中,与控件的尺寸有关的属性有android:minHe...

Pupa
2013/08/21
0
0
Android上使用camera拍照,把获取的照片上传到远程服务器

参考原文: Take a Photo from Android Camera and Upload it to a Remote PHP Server 使用Java上传文件 从Apache Software Foundation下载HttpClient 4.3.4。 在工程中添加下面的jar包: 参......

yushulx
2014/08/11
0
0
Android自动化测试解决方案

现在已经有大量的Android自动化测试架构或工具可供我们使用, 其中包括:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric。 另外LessPainful也提供服务来进行真实设备上...

瑾熙
2013/05/14
0
1
Android xUtils框架

xUtils简介 xUtils 包含了很多实用的android工具。 xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容...

让代码飞一会
2015/07/06
0
4
安卓反编译揭秘,伪加密APK文件如何被破坏

源码混淆 如上图,对Android APP的源码进行混淆后混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度。 但是混淆的功效只能运作在...

科技创造
2014/09/05
0
1
Android HttpClient上传文件与Httpconnection知识小结

Android上传文件到服务端可以使用HttpConnection 上传文件,也可以使用Android封装好的HttpClient类。当仅仅上传文件可以直接使用httpconnection 上传比较方便快捷。 1、使用HttpConection上...

安克诚
2012/07/11
0
0
Android小白成长之初级篇:NDK配置

AndroidNDK(Native Development Kit)实际上属于JNI(Java Native Interface)的一部分,JNI就是允许Java代码和其他语言写的代码进行交互。Android基于Java平台,自然也是支持这个特征了,因...

76135
2012/07/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java 重写排序规则,用于代码层级排序

1.dataList 是个List<Map<String,Object>> 类型的数据,所以比较的时候是冲map中获取数据,并且数据不能为空。 2.dataList 类型是由自己定义的,new Comparator<Map<String,Object>> 也是对应......

轻量级赤影
3分钟前
0
0
分布式大型互联网企业架构!

摘要: 开发工具 1.Eclipse IDE:采用Maven项目管理,模块化。 2.代码生成:通过界面方式简单配置,自动生成相应代码,目前包括三种生成方式(增删改查):单表、一对多、树结构。生成后的代码...

明理萝
3分钟前
0
1
对MFC程序的一点逆向分析:定位按钮响应函数的办法

因为消息响应函数保存在AFX_MSGMAP_ENTRY数组中, 观察nMessage、nCode、nID、pfn利用IDA在rdata段中搜索即可, 在IDA中找到代码段基址0x401000,函数地址0x403140, 在WinDbg中运行!addre...

oready
3分钟前
0
0
阻抗匹配与史密斯(Smith)圆图基本原理

参考:http://bbs.eeworld.com.cn/thread-650695-1-1.html

whoisliang
8分钟前
0
0
maven配置文件分离

一、 简介 遇到很多次别人处理的项目,测试环境,本地开发和线上环境的配置不一样,每一次部署都要重新修改配置文件,提交审核代码,才能打包,非常不方便。 其实相信很多人都知道可以使用m...

trayvon
9分钟前
0
0
MacOS和Linux内核的区别

导读 有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我...

问题终结者
25分钟前
1
0
SpringBoot | 第八章:统一异常、数据校验处理

前言 在web应用中,请求处理时,出现异常是非常常见的。所以当应用出现各类异常时,进行异常的捕获或者二次处理(比如sql异常正常是不能外抛)是非常必要的,比如在开发对外api服务时,约定了响...

oKong
33分钟前
0
0
mysql高级

一、存储引擎 InnoDB MyISAM 比较 二、数据类型 整型 浮点数 字符串 时间和日期 三、索引 索引分类 索引的优点 索引优化 B-Tree 和 B+Tree 原理 四、查询性能优化 五、切分 垂直切分 水平切分...

丁典
53分钟前
1
0
rsync通过同步服务、系统日志、screen工具

rsync通过后台服务同步 在远程主机中建立一个rsync服务器,在服务器上配置好rsync的各种应用,然后将本机作为rsync的一个客户端连接远程的rsync服务器。 首先在A机器上建立并且配置rsync的配...

黄昏残影
今天
5
0
Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
今天
137
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部