当前位置:首页 » 安卓系统 » android图片上传demo

android图片上传demo

发布时间: 2024-10-22 08:42:04

❶ android客户端怎样用七牛上传照片

相信很多开发者会把图片存放到七牛上,我的web站点也是吧图片存储到七牛上,对于以图片为主的站点,这样可以节省很大带宽。
将图片上传到七牛服务器的重点就是获得上传凭证uploadToken,直接把AccessKey和Secret放到客户端太不安全,容易被反编译。所以需要在服务器端根据AccessKey和Secret动态生成一个uploadToken,然后传回到客户端,客户端通过这个uploadToken将图片上传到七牛服务器。
第一、在服务器端生成uploadToken

//将图片上传到七牛 start
$bucket='七牛空间名称';
$expires = 3600;
$accessKey='去七牛查看';
$secretKey='去七牛查看';
$client = new QiniuClient($accessKey,$secretKey);
$flags = array();
$scope = $bucket;
$deadline = time() + $expires;
$flags['scope'] = $scope;
$flags['deadline'] = $deadline;
$flags['returnBody'] = null;
echo $client->uploadToken($flags);

这里注意一下bucket:七牛空间名称和deadline:uploadToken失效时间,具体可查看一下官网上传凭证介绍
uploadToken($flags)是自己封装的用于生成上传凭证的函数

public function uploadToken($flags) { if(!isset($flags['deadline'])) $flags['deadline'] = 3600 + time(); $encodedFlags = self::urlsafe_base64_encode(json_encode($flags)); $sign = hash_hmac('sha1', $encodedFlags, $this->secretKey, true); $encodedSign = self::urlsafe_base64_encode($sign); $token = $this->accessKey.':'.$encodedSign. ':' . $encodedFlags; return $token; }
public static function urlsafe_base64_encode($str){
$find = array("+","/");
$replace = array("-", "_");
return str_replace($find, $replace, base64_encode($str));
}

第二、下载qiniu-android-sdk-7.0.0.jar和android-async-http-1.4.6并导入项目
第三、android上传图片
由于Android4.0 以后不允许在主线程进行网络连接,所以需要新开个线程来获取上传凭证。

/*
* 上传图片到七牛
*/
private void uploadImg(){
new Thread(new Runnable(){
@Override
public void run() {
//获得七牛上传凭证uploadToken
String token=getUploadToken();
//手机SD卡图片存放路径
String imgPath="";
try {
imgPath=FileUtil.getBasePath()+ "/test.jpg";
} catch (IOException e) {
e.printStackTrace();
}
if(token!=null){
String data = imgPath;
//图片名称为当前日期+随机数生成
String key = getRandomFileName();
UploadManager uploadManager = new UploadManager();
uploadManager.put(data, key, token,
new UpCompletionHandler() {
@Override
public void complete(String arg0, ResponseInfo info, JSONObject response) {
// TODO Auto-generated method stub
Log.i("qiniu", info.toString());
}
}, null);
}
else{
Log.i("fail", "上传失败");
}
}
}).start();
}

FileUtil.getBasePath()使用来获取SD卡基本路径,getRandomFileName()生成一个随机数来命名上传图片,具体方法我在这就不写了。

获得上传凭证的方法也很简单,直接使用httpget和服务器通信,获得第一步中生成的数据即可。(注意10.0.2.2是模拟器提供的特殊IP,等同于在电脑端的环回测试IP127.0.0.1)

/*
* 获得七牛上传凭证uploadtoken
*/

private String getUploadToken()
{
HttpClient client = new DefaultHttpClient();
StringBuilder builder = new StringBuilder();

HttpGet myget = new HttpGet("http://10.0.0.2/test/getUploadToken.php");
try {
HttpResponse response = client.execute(myget);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
builder.append(s);
}
return builder.toString();
} catch (Exception e) {
Log.i("url response", "false");
e.printStackTrace();
return null;
}
}

通过LOG日志可以看到Qiniu--success,说明上传成功。

❷ android信息发布系统 需要通过content:uri上传图片到服务器数据库,不知道怎么开始,求解

可以用http上传啊,当文件上传就行了
// 1.多部分的实体
MultipartEntity reqEntity = new MultipartEntity();
// 2.增加
String[] mimeTypeList = pairMap.keySet().toArray(new String[1]);

for(String mimeType : mimeTypeList){
List<NameValuePair> pairs = pairMap.get(mimeType);

if (pairs != null) {
if (mimeType.equals("String")) {
for (int i = 0; i < pairs.size(); i++) {
reqEntity.addPart(pairs.get(i).getName(),new StringBody(pairs.get(i).getValue(), Charset.forName("utf-8")));
}
}else {
for (int i = 0; i < pairs.size(); i++) {
File file = new File(pairs.get(i).getValue());

ContentBody cbFile = new FileBody(file);//, mimeType);
reqEntity.addPart(pairs.get(i).getName(), cbFile);
}
}
}

}

❸ Android图片批量上传怎么保证上传顺序

我一般都是通过遍历集合的方式来上传图片。而且一般都不会去管这个上传的顺序,只需要服务端按你需要返回数据就可以了

❹ Android 上传图片到服务器

final Map<String, String> params = new HashMap<String, String>();
params.put("send_userId", String.valueOf(id));
params.put("send_email", address);
params.put("send_name", name);
params.put("receive_email", emails);

final Map<String, File> files = new HashMap<String, File>();
files.put("uploadfile", file);

final String request = UploadUtil.post(requestURL, params, files);

❺ android上传图片或文件大家都是怎么做的

一:可以使尘启伏用httppost上传文件
二:或者socket写入文件
上面两种都可旁斗以获得二进制流,然后把文件写入流,派携这一类网络操作最好使用异步任务模型

❻ android里的图片怎样上传到服务器并返回显示在手机上求具体的代码急用!!!

这个图片存放的位置是根据你的图片来源而定的。一般是放在sdcard下的某个目录下的,我基本看明白你写的需求。我来给你说下思路:服务端(android手机)这边需要写个工具类,来遍历SD卡下的文件,只显示jpg和png的图片。主类中有个按钮来添加图片,还有一个按钮是用来上传图片,然后写个监听,用来接收服务端发回的消息。文件的传输就不用我细说了吧...服务端这边写个监听来接收客户端发来的消息,保存发过来的数据流。至于手机上能显示这张图片,只要在写个imageview,把图片资源加载上就ok啦,你可以去网上搜索一下“sd上的文件上传”,有很多类似的文章和代码,可供学习的,有什么不懂的再问吧^_^

热点内容
小精灵反编译 发布:2024-10-22 10:50:31 浏览:722
存储学号和三门课 发布:2024-10-22 10:47:09 浏览:508
编程跳马 发布:2024-10-22 10:31:58 浏览:691
access数据库的操作 发布:2024-10-22 10:26:00 浏览:956
python修饰符 发布:2024-10-22 10:25:19 浏览:117
新增存储过程 发布:2024-10-22 10:18:13 浏览:202
编程的自锁 发布:2024-10-22 10:15:53 浏览:333
为什么微信开通了指纹还要输密码 发布:2024-10-22 10:14:45 浏览:921
电脑横机编程 发布:2024-10-22 10:12:46 浏览:416
搭建web服务器总结 发布:2024-10-22 09:48:02 浏览:385