1. Pendahuluan
Cloud bukanlah konsep baru. Apa sebenarnya cloud itu? Kalaupun diminta menjelaskannya dengan jelas, saya belum bisa menjelaskannya. Masih banyak penyedia layanan cloud dalam negeri, dan ada dua kategori utama. Yang pertama adalah penyedia cloud mirip host yang mirip dengan Alibaba Cloud, seperti Wan Wang dan penyedia ruang tradisional lainnya; SAE. Dibandingkan dengan penyedia ruang seperti Alibaba Cloud, level awal untuk platform hosting aplikasi lebih rendah, sehingga menyediakan platform pengujian yang baik bagi sebagian besar programmer yang kesulitan.
Program peningkatan perangkat lunak yang baru-baru ini saya tangani melibatkan banyak platform, banyak file, dan banyak versi. Jika saya membuat server file sendiri, bandwidthnya pasti tidak akan mampu memenuhi kebutuhan bisnis, jadi saya mulai menggunakan layanan Baidu Cloud Storage BCS. Ini berfungsi normal sekarang, tetapi kejang-kejang yang sesekali memaksa saya untuk Beralih ke Alibaba Cloud Storage, lagipula, hal-hal komersial masih perlu dikomersialkan dan profesional ditemukan. Namun untuk penggunaan teknis, mari kita bicara tentang penggunaan penyimpanan cloud.
2. Langkah penggunaan
1. Daftarkan akun Baidu
Saya tidak perlu mengatakan ini.
2. Disebut pengembang
Masukkan "Baidu Open Cloud Platform" (Saya sendiri tidak tahu Baidu). Jika Anda bukan pengembang setelah masuk, Anda akan diminta untuk mendaftar sebagai pengembang. Setelah mengisi informasi, tidak apa-apa.
3. Buat aplikasi
Buka beranda Baidu Open Cloud dan buat mesin aplikasi BAE. Saat membuat, jangan memilih solusi: gunakan BAE kecuali Anda masih memiliki situs web untuk digunakan. Tidak apa-apa untuk mencobanya. Kemudian setelah masuk, pilih cloud storage dan buat Bucket (akan dijelaskan nanti).
4. Unduh SDK
5. Kode uji
3. Kesulitan dan Perhatian
1. SDK yang tidak memiliki API atau tidak memiliki detail API membutuhkan banyak tenaga untuk membacanya, bahkan tidak senyaman membaca blog orang lain.
2. Pemahaman konsep
Bucket: Setelah membuat aplikasi, Bucket akan dibuat. Apa itu Bucket? Anggap saja sebagai huruf drive di Windows, sama seperti Anda membuat drive D, tempat Anda dapat meletakkan file dan folder dibuat. Sebenarnya tidak tepat untuk mengatakan bahwa Bucket adalah huruf drive karena lebih mirip direktori root di Linux. Saat membaca file Anda, Anda tidak dapat mengatakan bahwa file saya adalah: 1.txt. Sebagai gantinya: /1.txt. Dinyatakan dalam kode.
Objek: Sebuah Objek mewakili sebuah file. Ini terdiri dari banyak informasi meta dan blok file (merujuk pada sistem file). Sebelum menggunakan Object, pastikan untuk mengingat "/";
3. Unduh otentikasi
Menggunakan permintaan http untuk mengunduh file pribadi memerlukan parameter otentikasi. Jika Anda membaca API resmi, itu hanya menjelaskan proses enkripsi otorisasi, tetapi tidak ada versi Java secara spesifik. Saya juga menyediakan implementasi Java. , karena sudah diimplementasikan di SDK, hanya ada sedikit masalah. Tanda "/" antara Bucket dan nama file dari alamat unduhan yang dihasilkan oleh SDK dikodekan, yang akan menyebabkan beberapa pengunduh gagal mengunduh. Misalnya, QQ seluler tidak dapat mengunduh. Perlu diproses lagi.
4. Kunci API dan Kunci Rahasia
Akses aplikasi melalui ini.
4. Implementasi secara detail
1. Paket panduan
2. Bagian dari kode
Otorisasi:
Copy kode kodenya sebagai berikut:
BCSHelper kelas publik {
pribadi String host = "";//Nama host: bcs.duapp.com
private String accessKey = ""; //Dapat dilihat pada aplikasi yang Anda buat
String pribadi secretKey = "";
private String bucket = "";//Nama Bucket yang Anda buat
BaiduBCS pribadi baiduBCS = null;
BCSHelper publik() {
this.host = Konfigurasi.getHost();
this.accessKey = Konfigurasi.getAccessKey();
this.secretKey = Konfigurasi.getSecretKey();
this.bucket = Konfigurasi.getBucket();
Kredensial BCSCredentials = BCSCredentials baru (accessKey, secretKey);
baiduBCS = BaiduBCS baru (kredensial, host);
baiduBCS.setDefaultEncoding("UTF-8"); // UTF-8 bawaan
}
Unggah dan hapus file:
Copy kode kodenya sebagai berikut:
/**
* Unggah file ke BCS
*
* @return boolean true menunjukkan unggahan berhasil
* @file param
* File yang akan diunggah
*
*******/
boolean publik putObject(Berkas berkas) {
hasil boolean = benar;
mencoba {
//Harus dimulai dengan "/"
Permintaan PutObjectRequest = new PutObjectRequest(bucket, "/" + file.getName(), file);
//Mengatur informasi meta dari Object
Metadata ObjekMetadata = ObjekMetadata baru();
permintaan.setMetadata(metadata);
baiduBCS.putObject(permintaan);
LoggerService.addLoggerByOperate("BCS: Unggah file ke BCS:"+file.getName());
} tangkapan (Pengecualian e) {
hasil = salah;
LoggerService.addLoggerByError(e.getMessage());
e.printStackTrace();
}
hasil pengembalian;
}
/**
* Hapus file di BCS berdasarkan nama Objek
*
* @param objek
* Nama objek
* @return boolean penghapusan sebenarnya berhasil
* *****/
boolean publik deleteObject(Objek string) {
hasil boolean = benar;
mencoba {
if (existObject(objek)) {
baiduBCS.deleteObject(ember, "/" + objek);
LoggerService.addLoggerByOperate("BCS: Hapus file di BCS:"+object);
}
} tangkapan (Pengecualian e) {
hasil = salah;
e.printStackTrace();
LoggerService.addLoggerByError(e.getMessage());
}
hasil pengembalian;
}
Tentukan apakah Objek ada:
Copy kode kodenya sebagai berikut:
/**
* Tentukan apakah file tersebut ada di BCS
*
* @param objek
* nama objek
* @return boolean true menunjukkan keberadaan
****/
boolean publik adaObjek(Objek string) {
hasil boolean = salah;
mencoba {
hasil = baiduBCS.doesObjectExist(bucket, "/" + objek);
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
hasil pengembalian;
}
Hasilkan alamat unduhan yang Anda tulis sendiri:
Copy kode kodenya sebagai berikut:
/**
* Dapatkan alamat pengunduhan Objek
*
* @param objek
* Nama objek
* @return String Mengembalikan url yang diunduh
*******/
string publik getUrl(objek string) {
// Konten yang perlu dienkripsi
String data = "MBO" + "/n" + "Metode=GET" + "/n" + "Bucket=" + bucket + "/n" + "Objek=/" + objek + "/n";
//Hasil terenkripsi
String hmacsha1 = getHmacSHA1(kunci rahasia, data);
// Membangun parameter tanda
Tanda string = "MBO:" + accessKey + ":" + hmacsha1;
// url
Pembuat StringBuilder = StringBuilder baru();
pembangun.menambahkan("http://");
pembangun.tambahkan(host);
pembangun.menambahkan("/");
pembangun.tambahkan(ember);
pembangun.menambahkan("/");
pembangun.tambahkan(objek);
pembangun.menambahkan("?tanda=");
pembangun.tambahkan(tanda);
kembalikan pembangun.toString();
}
// Enkripsi tanda tangan
String pribadi getHmacSHA1(String secretKey, String data) {
Hasil string = "";
mencoba {
SecretKeySpec penandatangananKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
Base64 base64 = Base64 baru();
@SuppressWarnings("akses statis")
byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
hasil = String baru(enbytes, "utf-8");
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
hasil pengembalian;
}
Alamat yang dihasilkan SDK yang dimodifikasi:
Copy kode kodenya sebagai berikut:
* Dapatkan alamat pengunduhan Objek
*
* @param objek
* Nama objek
* @return String Mengembalikan url yang diunduh
*******/
string publik getUrl(objek string) {
Hasil string = "";
GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, bucket, "/" + objek);
generateUrlRequest.setBcsSignCondition(BCSSignCondition baru());
hasil = baiduBCS.generateUrl(generateUrlRequest);
hasil=hasil.replaceFirst("%2F", "/");
hasil pengembalian;
}
Ada juga banyak kode tes yang telah disediakan oleh pejabat, dan saya juga telah menyediakannya. Jika perlu, unduh dan pelajari sendiri, lalu rangkum dan gunakan dalam proyek sebenarnya kemajuan mengunggah file. Saya harap Anda dapat memberi tahu saya apa yang Anda lihat, lagipula, dia juga seorang pemula.