關於雲服務Bmob的使用方法(下)——上傳檔案
阿新 • • 發佈:2019-01-01
上一篇我們說了如何傳輸資料,那麼這一篇我們進階一下,來談談如何傳輸檔案,比如圖片。
關於如何在bmob上註冊和申請,上一篇已經有說明,不懂的讀者可以去看看,然後我們直接進入到專案中,首先我們還是老規矩,初始化bmob:
這個初始化很容易,就不再贅述了,然後我們建一個新的bean類:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Bmob.initialize(MainActivity.this, "267ef22e7f2a44fee01869204b25da3f"); initView(); initListener(); // initData(); }
<span style="font-size:18px;">public class PersonBean extends BmobObject{ private String Name; private String password; private BmobFile file; public PersonBean(String Name,String password,BmobFile file){ this.Name = Name; this.password = password; this.file = file; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public BmobFile getFile() { return file; } public void setFile(BmobFile file) { this.file = file; } }</span>
其中包含了新的屬性,bmobfile也就是bmob的sdk裡自己封裝的型別,是屬於檔案類,所以我們直接進行宣告,然後進行檔案的選擇和上傳:
這是在上傳的按鈕中進行上傳事件的呼叫,至於選擇的檔案的方法,等下筆者會將所有原始碼給出,不用急。然後上傳成功後我們可以在後臺直接進行檢視,這樣:<span style="font-size:18px;">uploadImage.setOnClickListener(new OnClickListener() { @SuppressWarnings("unused") @Override public void onClick(View v) { // TODO Auto-generated method stub File file = new File("/mnt/sdcard/"+Path); if (file != null) { final BmobFile bmobFile = new BmobFile(file); final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setMessage("正在上傳。。。"); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.show(); bmobFile.upload(MainActivity.this, new UploadFileListener() { @Override public void onSuccess() { // TODO Auto-generated method stub url = bmobFile.getUrl(); insertObject(new PersonBean("絕地反擊","123456",bmobFile)); Toast.makeText(MainActivity.this, "上傳成功", Toast.LENGTH_SHORT).show(); progressDialog.dismiss(); } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "上傳失敗"+arg1, Toast.LENGTH_SHORT).show(); } }); }else { Toast.makeText(MainActivity.this, "檔案為空", Toast.LENGTH_SHORT).show(); } } });</span>
左邊點選檔案服務,然後點選右邊的檔案管理就能夠看所有上傳的檔案,就像這樣:
這裡面是筆者測試的檔案,點選檔名稱就能看到檔案了。
說完了上傳檔案,我們來說一說下載檔案,下載檔案就是從平臺分配給檔案的url來進行下載和解析,直接看程式碼:
<span style="font-size:18px;">downloadBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("正在上傳。。。");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Looper.prepare();
try {
Bitmap bitmap1=null;
URL myUrl;
url = "http://file.bmob.cn/" + url;
Toast.makeText(MainActivity.this, url+"", Toast.LENGTH_SHORT).show();
myUrl=new URL(url);
HttpURLConnection conn=(HttpURLConnection)myUrl.openConnection();
conn.setConnectTimeout(5000);
conn.connect();
InputStream is=conn.getInputStream();
bitmap1=BitmapFactory.decodeStream(is);
//把bitmap轉成圓形
BitmapUtil bmuUtil = new BitmapUtil(MainActivity.this);
mBitmap=bmuUtil.toRoundBitmap(bitmap1);
is.close();
Message msg = mhandler.obtainMessage(1, mBitmap);
mhandler.sendMessage(msg);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Looper.loop();
}
}).start();
}
});</span>
這個和上面的一樣,筆者也是在按鈕的點選事件中寫的,由於是demo,所以都是用匿名內部類,大家看方法就好,由於是耗時的網路操作,所以筆者用了執行緒進行介面的變換,關於執行緒的問題,筆者還有文章是關於這個方面的,大家有興趣可以去看看,然後成果是這樣:
原始碼的地址:http://pan.baidu.com/s/1hq4dseo 記得將APPID給換成自己申請的id。