android的自带的httpClient 怎么上传文件
在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端。它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。
HTTP工作原理:
1客户端(一般是指浏览器,这里是指自己写的程序)与服务器建立连接
2建立连接后,客户端向服务器发送请求
3服务器接收到请求后,向客户端发送响应信息
4客户端与服务器断开连接
HttpClient的一般使用步骤:
1使用DefaultHttpClient类实例化HttpClient对象
2创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。
3调用execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。
4通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。
最后记得要在AndroidManifestxml文件添加网络权限
<uses-permission android:name="androidpermissionINTERNET" />
附件中包含了一个拍照上传的源代码
今天,让 下面说说电脑和安卓手机之间的文件传输方法,看看这些你都知道吧。
1 USB数据线方法
用手机的数据线连接电脑的USB,然后在手机上设置文件传输,这样就可以互相传输了。
2蓝牙互相传输文件。首先,让 打开手机和电脑上的蓝牙功能,配对。选择蓝牙发送或接收文件,然后我们选择要发送到手机的文件,手机端点确定接收。
3利用无线局域网互传文件,记得最近两年手机可以连接WiFi和电脑互传文件,但是新系统之后就没有这个功能了。我们可以在手机上下载一个fv文件管理器,然后在文件管理器上打开一个http/ftp服务器。电脑可以通过键入您设置的URL来访问它。
4用阿里盘实现互传。我 我以前告诉过你如何把阿里磁盘变成你电脑的本地硬盘。如果可以 ,请看我之前发的文章,让我们的手机和电脑同时登录阿里盘,盘里的文件手机电脑都可以用。
你还知道哪些方法?让 让我们看看有没有更好的。
王者之心2点击试玩
我会啊,我是去年开始使用百度云的,接触比较多,还在了解一点,现在我来教教你如何使用
一、 账号注册
百度网盘是一个非常实用的网络存储平台,没有账号的可以先自己注册一个。打开百度网盘官网 。点击注册,根据提示信息完善手机号,后期可以绑定微博、QQ、微信快捷登录。
二、文件下载
1 点击发你的下载链接,输入提取码,然后点击提取文件。
2 点击下载即可下载。如果提示文件过大,可以点击保存到自己的网盘空间,然后使用客户端下载。
3 如果没有客户端,那就下载一个装上吧。装好后输入注册的账号密码登录即可下载。
百度网盘是百度推出的一项云存储服务,首次注册即有机会获得15GB的空间,目前有Web版、Windows客户端、Android手机客户端,用户将可以轻松把自己的文件上传到网盘上,并可以跨终端随时随地查看和分享。
// 首先组拼文本类型的参数
StringBuilder sb = new StringBuilder();
for (MapEntry<String, String> entry : paramsentrySet()) {
sbappend(PREFIX);
sbappend(BOUNDARY);
sbappend(LINEND);
sbappend("Content-Disposition: form-data; name=\""
+ entrygetKey() + "\"" + LINEND);
sbappend("Content-Type: text/plain; charset=" + CHARSET + LINEND);
sbappend("Content-Transfer-Encoding: 8bit" + LINEND);
sbappend(LINEND);
sbappend(entrygetValue());
sbappend(LINEND);
}
DataOutputStream outStream = new DataOutputStream(
conngetOutputStream());
outStreamwrite(sbtoString()getBytes());
一、注意编码方式。同为MP4格式的视频,它的编码方式有多种:divx、xvid、h264等等。可以分别试一下,通常网页支持的是xvid。二是注意视频分辨率。不能高了,否则不能播放。通常用320240试试。三是注意视频的码率(比特率),不能高了,否则不能播放。通常用500K左右就可以了。以上三个参数,在转换成MP4时,可以设置。建议用格式工厂来转换。在转换时,点开输出配置,就可以设置具体的参数了。
我是这样做的
Intent intent = new Intent(IntentACTION_GET_CONTENT);
intentsetType("/");
intentaddCategory(IntentCATEGORY_OPENABLE);
startActivityForResult(IntentcreateChooser(intent, "请选择一个要上传的文件"), 1);
然后选择文件后调用
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == ActivityRESULT_OK) {
Uri uri = datagetData();
String url= uritoString();
}
}
获得路径,根据路径调用
public String convertCodeAndGetText(String str_filepath) {// 转码\
try {
File file1 = new File(str_filepath);
file_name = file1getName();
FileInputStream in = new FileInputStream(file1);
byte[] buffer = new byte[(int) file1length() + 100];
int length = inread(buffer);
load = Base64encodeToString(buffer, 0, length,
Base64DEFAULT);
inclose();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IOException e) {
eprintStackTrace();
}
return load;
}
对文件进行编码
首先是拍照:使用Intent即可,
[java] view plaincopyprint
01final String start = EnvironmentgetExternalStorageState();
02private static final String PHOTOPATH = "/photo/";
03
04if(startequals(EnvironmentMEDIA_MOUNTED)){
05Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
06File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);
07if(!fileexists()){
08filemkdirs();
09}
10tempphontname = SystemcurrentTimeMillis()+"jpg";
11bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);
12intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));
13startActivityForResult(intent, 1);
14}
final String start = EnvironmentgetExternalStorageState();
private static final String PHOTOPATH = "/photo/";
if(startequals(EnvironmentMEDIA_MOUNTED)){
Intent intent = new Intent(MediaStoreACTION_IMAGE_CAPTURE);
File file = new File(EnvironmentgetExternalStorageDirectory()+PHOTOPATH);
if(!fileexists()){
filemkdirs();
}
tempphontname = SystemcurrentTimeMillis()+"jpg";
bufferappend(EnvironmentgetExternalStorageDirectory()+PHOTOPATH)append(tempphontname);
intentputExtra(MediaStoreEXTRA_OUTPUT, UrifromFile(new File(buffertoString())));
startActivityForResult(intent, 1);
}
其次是从本地相册选:依旧是Intent
如下代码:
[java] view plaincopyprint
01if(startequals(EnvironmentMEDIA_MOUNTED)){
02 Intent getImage = new Intent(IntentACTION_GET_CONTENT);
03 getImageaddCategory(IntentCATEGORY_OPENABLE);
04 getImagesetType("image/jpeg");
05 startActivityForResult(getImage, 0);
06}
if(startequals(EnvironmentMEDIA_MOUNTED)){
Intent getImage = new Intent(IntentACTION_GET_CONTENT);
getImageaddCategory(IntentCATEGORY_OPENABLE);
getImagesetType("image/jpeg");
startActivityForResult(getImage, 0);
}
接下来是主要的:因为调用完系统的方法后,回返回到回调方法onActivityResult(int, int, Intent)中,
在里面进行主要的照片上传服务器的操作,
见代码:
[java] view plaincopyprint
01@Override
02 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
03 ContentResolver resolver = getContentResolver();
04 if(requestCode==1)//
05 {
06 if(resultCode==ActivityRESULT_OK)
07 {
08 if(EnvironmentgetExternalStorageState()equals(EnvironmentMEDIA_MOUNTED))
09 {
10ew Thread(new Runnable()
11 {
12 @Override
13 public void run() {
14//进行上传操作
15}
16}start();
转载
0条评论