當前位置:首頁 » 安卓系統 » 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: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
密碼大師如何進入 發布:2024-10-22 09:44:47 瀏覽:524
linux解決svn沖突 發布:2024-10-22 09:44:10 瀏覽:782