安卓+七牛雲的第三方圖片儲存實踐
程式碼示例:
新增sdk依賴:
public class MainActivity extends AppCompatActivity { private ProgressDialog progressDlg; private Intent intent; private final int NONE=0,LOCAL_PICTURE=1,UPLOAD_TAKE_PICTURE=2,SAVE_THEME_IMAGE=3; private String takePictureUrl,upToken, imageFileName; ImageView photo; TextView select_local_picture; TextView download_picture; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); photo=(ImageView)findViewById(R.id.imageView); //上傳和下載的圖片位置 select_local_picture=(TextView)findViewById(R.id.textView); //上傳圖片的按鈕 download_picture=(TextView)findViewById(R.id.textView2); //點選選擇本地圖片 select_local_picture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent,LOCAL_PICTURE); } });
//點選下載圖片 download_picture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HashMap map = new HashMap(); map.put("請求型別", "請求下載圖片"); requestFragment.httpRequest(map, CommonUrl.getPhoto); //伺服器請求 } }); }
//選擇圖片完成後 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==NONE) return; //耗時操作傳到handler裡去處理 if(resultCode== Activity.RESULT_OK){ this.intent=data; handler.sendEmptyMessage(LOCAL_PICTURE); } } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case LOCAL_PICTURE: //處理本地選擇的圖片 Uri uri=intent.getData(); String photo_local_file_path="圖片地址"; //使用uri獲取圖片地址略 if (!(photo_local_file_path.toString().toLowerCase().endsWith("jpg")||photo_local_file_path.toString().toLowerCase().endsWith("png") ||photo_local_file_path.toString().toLowerCase().endsWith("jpeg")||photo_local_file_path.toString().toLowerCase().endsWith("gif"))) { Toast.makeText(MainActivity.this, "不支援此格式的上傳", Toast.LENGTH_LONG).show(); break; }
//簡單壓縮圖片
Bitmap bitmap2=PhotoUtil.getInstance().trasformToZoomPhotoAndLessMemory(photo_local_file_path);
Drawable addPicture =new BitmapDrawable(getResources(), bitmap2);
takePictureUrl=photo_local_file_path;
photo.setImageDrawable(addPicture);
{
//imageFileName為儲存在伺服器端的圖片名
imageFileName = "username" + "/" + takePictureUrl.hashCode() + new Random(System.nanoTime()).toString();
HashMap map = new HashMap();
map.put("請求型別", "請求獲得token");
map.put("image", imageFileName);
Log.d("選擇了本地照片", "正在請求伺服器端獲取token");
requestFragment.httpRequest(map,Url.getToken);
}
break;
case UPLOAD_TAKE_PICTURE: //獲取token之後
{
//使用SDK傳輸到七牛雲
UploadManager uploadmgr = new UploadManager();
File data = new File(takePictureUrl);
String key = imageFileName;
String token = upToken;
progressDlg = ProgressDialog.show(MainActivity.this, "上傳圖片", "正在上傳圖片", true, true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
//取消了上傳
}
});
progressDlg.setMax(101);
uploadmgr.put(data, key, token, new UpCompletionHandler() {
@Override
public void complete(String key, ResponseInfo info, JSONObject response) {
//完成,發信息給業務伺服器
Log.d("to第三方結果",response.toString());
new Thread() {
public void run() {
Map<String, Object> map = new HashMap<>();
Message msg = handler.obtainMessage();
msg.obj = map;
msg.what = SAVE_THEME_IMAGE;
handler.sendMessage(msg);//要上傳的圖片包裝在msg後變成了訊息發到handler
}
}.start();
}
}, new UploadOptions(null, null, false,
new UpProgressHandler() {
public void progress(String key, double percent) {
//mProgress.setProgress((int)percent*100);
progressDlg.setProgress((int) percent * 100);
}
}, null));
}
break;
case SAVE_THEME_IMAGE: //傳到第三方之後告知伺服器
progressDlg.dismiss();
{
HashMap map = new HashMap();
map.put("請求型別","上傳到七牛");
map.put("image",imageFileName);
requestFragment.httpRequest(map, "完成傳輸"); //在伺服器儲存圖片(只儲存圖片名)
}
progressDlg=ProgressDialog.show(MainActivity.this, "上傳圖片", "正在儲存圖片", true, true, new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
//上傳完圖片後取消了儲存
}
});
break;
default: //使用者身份認證失敗
{
break;
}
}
}
};
//伺服器端的響應
public void requestFinish(String result, String requestUrl) throws JSONException {
Message message = new Message();
//獲取token
if(requestUrl.equals(("獲取口令"))){
JSONObject jsonObject=new JSONObject(result);
int code = Integer.valueOf(jsonObject.getString("code"));
if (code == 1) {
JSONArray token = jsonObject.getJSONArray("contents");
upToken = token.getString(0);//成功獲取口令
handler.sendEmptyMessage(UPLOAD_TAKE_PICTURE);
return;
}
else{
Toast.makeText(MainActivity.this, "獲取口令失敗", Toast.LENGTH_LONG).show();
}
}
if (requestUrl.equals("下載圖片")) {
JSONObject object = new JSONObject(result);
int code = Integer.valueOf(object.getString("code"));
if (code == 1) {
String url = "從伺服器獲得圖片的url地址";
//使用picasso等圖片處理庫獲取圖片
return;
} else {
// Toast.makeText(profileActivity.this, "未知錯誤", Toast.LENGTH_LONG).show();
return;
}
}
}
}
備註:本文只討論客戶端相關操作,不涉及伺服器端的實現
相關推薦
安卓+七牛雲的第三方圖片儲存實踐
程式碼示例: 新增sdk依賴: public class MainActivity extends AppCompatActivity { private ProgressDialog progressDlg; private Intent intent; private
【微信小程式】在微信開發工具上七牛雲的圖片可以看到,但是在真機上看不到的原因解決
在開發微信小程式過程中,在微信開發者工具上,七牛雲的圖片都可以展示出來,但是在真機上,七牛雲的圖片卻展示不出來,也沒有報404找不到或者不能載入圖片的問題, 必須保證: 1.圖片是用image載入的; 2.圖片的url裡面沒有中文; 3.圖片的HTTP應為小寫的
使用github做一個類似七牛雲的雲端儲存
一、吐槽 首先我想說一句“日了狗”了不知道過分不過分! 前段時間,七牛雲發來下面的通知: 這意味著,我之前所有的使用七牛雲的圖片域名變了,要修改!要全部修改!!!算了,不說了。 消消氣,接下來說怎麼
七牛雲JAVA圖片上傳
七牛雲上傳簡單應用,java版 記得匯入七牛雲的SDK AccountMgr.java------儲存AK and SK /** * 七牛雲AK 和SK * 賬戶資訊,獲取授權認證 */
從七牛雲遷移圖片到github
遷移理由 問題是網站的大部分圖床都是用的七牛雲,官網有改動,所以原測試域名都失效,所以決定進行遷移,將七牛雲中的圖片遷移到github倉庫中。 遷移步驟 Step1:從廢棄測試域名空間至可用測試域名空間遷移。 Step2:從測試域名的空間下載至本機。 Step3:用git的方式,從本機上傳
ThinkPHP3.2整合七牛雲第三方sdk
ThinkPHP3.2整合七牛雲最新第三方sdk,版本Release v7.1.3感覺ThinkPHP對第三方的sdk的支援不是特別友好,這次使用七牛雲sdk時就是這個問題,雖然ThinkPHP有自帶的七牛上傳驅動,但是肯定不如七牛自己更新的sdk好,畢竟是很久之前的版本了
七牛雲免費物件儲存使用圖文教程
七牛雲是目前在行業物件儲存裡比較有良心的產品,我部落格目前的圖片均在七牛雲端儲存、呼叫,雖然伺服器硬碟足夠,但時間常了也會對伺服器是一種負擔,因此,本人選用七牛雲進行部落格圖片的儲存。下面就將我應用七牛雲的經驗分享給大家。一、註冊七牛雲七牛雲是通過郵箱註冊的,註冊後就進行認證
上傳圖片,視訊等檔案到七牛雲物件儲存上
上傳圖片: 需要用到的引數: 1、AccessKey (在“個人中心”–>“祕鑰管理”中) 2、SecretKey (在“個人中心”–>“祕鑰管理”中) 3、儲存空間名字(自己建立的) 1、建立一個Maven專案 pom.xml &l
springboot實現儲存檔案(圖片)到七牛雲
1、建立QiniuConstant.java package com.zhonghao.pinfang.core.util.qiniu; import org.springframework.boot.context.properties.ConfigurationProperties; i
hexo入門學習(六):文章圖片儲存到七牛雲
詳情請檢視個人部落格文章圖片儲存到七牛雲 轉載請註明出處! 前幾天開啟blog發現使用前文中的方法原方法 文章中的圖片莫名奇妙的掛了。查閱資料(百度、谷歌)。發現七牛雲端儲存可以很好的解決這個問題。於是根據下面這篇文章基本解決了問題。 參考文
如何利用七牛雲線上儲存圖片
平時寫學習筆記和部落格文章的時候早已習慣了使用 Markdown 記錄,各種方便,但圖片的儲存和展示成了一個比較關鍵的問題,雖然可以使用本地相對路徑顯示圖片,但也很不方便,總不能一直是單機版吧。七牛雲是國內一個不錯的線上儲存平臺,客戶眾多,你不用擔心哪天公司突然
在ThinkPHP5框架下引入Ueditor並實現向七牛雲物件儲存上傳圖片同時將圖片資訊儲存到MySQL資料庫,同時實現lazyload懶載入
這是我花了很多天的時間才得以真正實現的一組需求。 文章後面有完整Demo的GitHub連結。 一、 需求描述 1. 應用是基於ThinkPHP5開發的; 2. 伺服器環境是LNMP,PHP版本是7.2,資料庫是MySQL5.6; 3. 由使用者(包括管理員)上傳的圖片一類的媒體檔案不能直接上傳到應用
Ueditor結合七牛雲存儲上傳圖片、附件和圖片在線管理的實現和最新更新
1.4 star json serve 列出文件 教程 開發 存儲服務器 name 最新下載地址: https://github.com/widuu/qiniu_ueditor_1.4.3 Ueditor七牛雲存儲版本 註意事項 老版本請查看 : https://gith
yii2 ueditor-百度編輯器圖片上傳七牛雲
inf https jpg 文件 詳細 hand widget yii 找到 1、編輯器使用的是褲衩哥的小部件,沒有安裝的使用composer安裝 php composer.phar require kucha/ueditor "*" 附上github的地址:http
七牛雲馮立元:邊緣儲存的演進之路
2018 年 10 月 18 日-20 日,由極客邦科技與 InfoQ 中國主辦的 QCon 全球軟體開發大會在上海寶華萬豪酒店舉行。作為一場綜合性的技術盛會,QCon 全球軟體開發大會每年都會在倫敦、北京、東京、紐約、聖保羅、上海、舊金山召開,而此次 QCon 大會上海站更是設定了 30 餘個專題,邀
laravel 新增 七牛雲 儲存驅動
接著上2篇筆記: 使用 qshell 將本地檔案同步到七牛雲 https://blog.csdn.net/beyond__devil/article/details/83030702 將 laravel 專案內靜態檔案,css、js、images 部署到七牛雲 csdn https:/
共建公安標準體系 | 七牛雲與銳安科技達成深度戰略合作
2018 年 10 月 12 日,七牛雲與北京銳安科技有限公司簽署戰略合作協議。銳安科技總經理謝永恆、副總經理帥佩章,七牛雲總裁呂桂華、七牛雲人工智慧實驗室負責人彭垚、市場副總裁錢驥華出席簽約儀式。 七牛雲與銳安科技將在警務安防、網路資訊保安、大資料服務等重要領域達成全面長期戰略合作。通過深度
【七牛雲】通過富文字summernote,上傳圖片到七牛雲
在這邊我只對summernote富文字加以說明 1、首先是在index.html引入對應js和css <link rel="stylesheet" href="dist/static/summernote/summernote.css"> <script s
elementui 上傳圖片到七牛雲上面去,可以多張上傳 【簡單/有效】
目的:elementui 上傳多張圖片到七牛雲上面去 第一步:效果說明 七牛雲顯示: 第二步:程式碼 2-1、這裡會用到兩個小東西,一個是 後臺獲取 token,一個是獲取一個隨機不重複字串(uuid用來做上傳檔案的名稱) token 獲取:https
七牛雲測試域名到期博客圖片問題
刪除列 方法 har 方便 管理 註釋 效果 http line 從上周末開始到今天,終於把七牛雲到期的測試域名所屬空間的博客照片遷移到騰訊雲。騰訊雲有一定量免費空間供用戶使用(發博文時免費額度:50 GB 標準存儲容量,10 GB CDN 回源流量,100 萬次讀請求,1