1. مقدمة
السحابة ليست مفهوما جديدا. ما هي السحابة بالضبط؟ حتى لو طلبت مني أن أشرحها بوضوح، لا أستطيع أن أشرحها في الوقت الحالي، تسمى السحابة إذا كانت متصلة بالإنترنت. لا يزال هناك العديد من مقدمي الخدمات السحابية المحليين، وهناك فئتان رئيسيتان: إحداهما عبارة عن مزود سحابي يشبه المضيف مثل Alibaba Cloud، مثل Wanwang ومقدمي الخدمات الفضائية التقليديين الآخرين، والأخرى هي منصات استضافة التطبيقات، مثل BAE. ساي. بالمقارنة مع موفري خدمات الفضاء مثل Alibaba Cloud، فإن مستوى الدخول لمنصات استضافة التطبيقات أقل، مما يوفر منصة اختبار جيدة لغالبية المبرمجين المتعثرين.
يتضمن برنامج ترقية البرنامج الذي كنت مسؤولاً عنه مؤخرًا منصات متعددة وملفات متعددة وإصدارات متعددة. إذا قمت ببناء خادم الملفات الخاص بي، فمن المؤكد أن النطاق الترددي لن يكون قادرًا على تلبية احتياجات العمل، لذلك بدأت في استخدام خدمة Baidu Cloud Storage BCS. إنه يعمل بشكل طبيعي الآن، لكن التشنجات المتقطعة العرضية أجبرتني على التحول إلى Alibaba Cloud Storage، بعد كل شيء، لا تزال الأشياء التجارية بحاجة إلى التسويق والاحتراف، على الأقل إذا كانت هناك مشكلة، على عكس Baidu Cloud Storage، لا يمكن لخدمة العملاء ذلك يمكن العثور عليها. ولكن كاستخدام تقني، دعونا نتحدث عن استخدام التخزين السحابي.
2. خطوات الاستخدام
1. قم بتسجيل حساب بايدو
لا أحتاج أن أقول هذا.
2. دعا المطور
أدخل "Baidu Open Cloud Platform" (لا أعرف Baidu بنفسي). إذا لم تكن مطورًا بعد تسجيل الدخول، فستتم مطالبتك بالتسجيل كمطور بعد ملء المعلومات، سيكون الأمر على ما يرام.
3. قم بإنشاء تطبيق
انتقل إلى الصفحة الرئيسية لـ Baidu Open Cloud وقم بإنشاء محرك تطبيقات BAE. عند الإنشاء، لا تختر الحل: استخدم BAE إلا إذا كان لا يزال لديك موقع ويب يمكنك التمسك به. لا بأس أن تجربها. ثم بعد الدخول قم باختيار التخزين السحابي وقم بإنشاء Bucket (سيتم شرحه لاحقاً).
4. قم بتنزيل SDK
5. رمز الاختبار
3. الصعوبات والانتباه
1. تتطلب حزمة SDK التي لا تحتوي على واجهة برمجة تطبيقات أو لا تحتوي على واجهة برمجة تطبيقات مفصلة الكثير من الطاقة للقراءة، وهي ليست مريحة مثل قراءة مدونات الآخرين.
2. فهم المفاهيم
الجرافة: بعد إنشاء تطبيق، سيتم إنشاء الجرافة. ما هو الجرافة؟ فكر في الأمر كحرف محرك أقراص ضمن نظام التشغيل Windows، تمامًا كما تقوم بإنشاء محرك أقراص D، حيث يمكنك وضع الملفات والمجلدات الأخرى يتم إنشاؤها. من غير الدقيق في الواقع القول بأن Bucket هو حرف محرك أقراص لأنه يشبه الدليل الجذر في Linux. عند قراءة الملف الخاص بك، لا يمكنك القول أن الملف الخاص بي هو: 1.txt. بدلاً من ذلك: /1.txt. أعلن في التعليمات البرمجية.
الكائن: يمثل الكائن ملفًا ويتكون من الكثير من المعلومات التعريفية وكتل الملفات (راجع نظام الملفات). تتضمن المعلومات التعريفية اسم الملف وحجم الملف والوقت وما إلى ذلك. قبل استخدام الكائن، تأكد من تذكر "/"؛
3. قم بتنزيل المصادقة
يتطلب استخدام طلبات http لتنزيل الملفات الخاصة معلمات المصادقة، إذا قرأت واجهة برمجة التطبيقات الرسمية، فهي تشرح فقط عملية تشفير الترخيص، ولكن لا يوجد إصدار Java، ولن أشرح خطوات التفويض على وجه التحديد. نظرًا لأنه تم تنفيذه في SDK، هناك مشكلة صغيرة فقط. يتم تشفير "/" بين الحاوية واسم ملف عنوان التنزيل الذي تم إنشاؤه بواسطة SDK، مما قد يتسبب في فشل بعض برامج التنزيل في التنزيل، على سبيل المثال، لا يمكن تنزيل QQ المحمول. يحتاج إلى معالجة مرة أخرى.
4. مفتاح API والمفتاح السري
الوصول إلى التطبيق من خلال هذا.
4. التنفيذ التفصيلي
1. حزمة الدليل
2. جزء من الكود
التفويض:
انسخ رمز الكود كما يلي:
الفئة العامة BCSHelper {
مضيف سلسلة خاص = "";// اسم المضيف: bcs.duapp.com
Private String accessKey = ""; // يمكن رؤيته في التطبيق الذي تقوم بإنشائه
سلسلة خاصة SecretKey = "";
سلسلة خاصة دلو = "";// اسم الجرافة التي قمت بإنشائها
Private BaiduBCS baiduBCS = null;
عامة BCSHelper () {
this.host = Configuration.getHost();
this.accessKey = Configuration.getAccessKey();
this.secretKey = Configuration.getSecretKey();
this.bucket = Configuration.getBucket();
BCSCredentials credentials = new BCSCredentials(accessKey, SecretKey);
baiduBCS = new BaiduBCS(credentials, host);
baiduBCS.setDefaultEncoding("UTF-8"); // UTF-8 الافتراضي
}
تحميل وحذف الملفات:
انسخ رمز الكود كما يلي:
/**
* تحميل الملفات إلى BCS
*
* @return boolean true يشير إلى نجاح التحميل
* ملفparam
* الملفات المراد رفعها
*
*******/
كائن منطقي عام (ملف ملف) {
نتيجة منطقية = صحيح؛
يحاول {
// يجب أن يبدأ بـ "/"
PutObjectRequest request = new PutObjectRequest(bucket, "/" + file.getName(), file);
// قم بتعيين المعلومات التعريفية للكائن
بيانات تعريف ObjectMetadata = new ObjectMetadata();
request.setMetadata(metadata);
baiduBCS.putObject(request);
LoggerService.addLoggerByOperate("BCS: تحميل الملفات إلى BCS:"+file.getName());
} قبض (الاستثناء ه) {
النتيجة = خطأ؛
LoggerService.addLoggerByError(e.getMessage());
printStackTrace();
}
نتيجة الإرجاع؛
}
/**
* حذف الملفات الموجودة على BCS حسب اسم الكائن
*
*كائنparam
* اسم الكائن
* @return الحذف الحقيقي المنطقي ناجح
* *****/
حذف كائن منطقي عام (كائن سلسلة) {
نتيجة منطقية = صحيح؛
يحاول {
إذا (يوجد كائن (كائن)) {
baiduBCS.deleteObject(bucket, "/" + object);
LoggerService.addLoggerByOperate("BCS: حذف الملفات الموجودة على BCS:"+object);
}
} قبض (الاستثناء ه) {
النتيجة = خطأ؛
printStackTrace();
LoggerService.addLoggerByError(e.getMessage());
}
نتيجة الإرجاع؛
}
تحديد ما إذا كان الكائن موجودًا:
انسخ رمز الكود كما يلي:
/**
* تحديد ما إذا كان الملف موجودًا في BCS
*
*كائنparam
* اسم الكائن
*return boolean true يشير إلى الوجود
* ***/
كائن منطقي عام (كائن سلسلة) {
نتيجة منطقية = خطأ؛
يحاول {
result = baiduBCS.doesObjectExist(bucket, "/" + object);
} قبض (الاستثناء ه) {
printStackTrace();
}
نتيجة الإرجاع؛
}
إنشاء عنوان التنزيل الذي كتبته بنفسك:
انسخ رمز الكود كما يلي:
/**
* احصل على عنوان تنزيل Object
*
*كائنparam
* اسم الكائن
* سلسلة @return تُرجع عنوان URL الذي تم تنزيله
*******/
سلسلة getUrl العامة (كائن سلسلة) {
// المحتوى الذي يحتاج إلى التشفير
بيانات السلسلة = "MBO" + "/n" + "Method=GET" + "/n" + "Bucket=" + Bucket + "/n" + "Object=/" + object + "/n";
// نتيجة مشفرة
String hmacsha1 = getHmacSHA1(secretKey, data);
// إنشاء معلمة الإشارة
علامة السلسلة = "MBO:" + AccessKey + ": + hmacsha1;
// url
StringBuilder builder = new StringBuilder();
builder.append("http://");
builder.append(host);
builder.append("/");
builder.append(bucket);
builder.append("/");
builder.append(object);
builder.append("?sign=");
builder.append(sign);
إرجاع builder.toString();
}
// تشفير التوقيع
سلسلة خاصة getHmacSHA1(String SecretKey، String data) {
نتيجة السلسلة = ""؛
يحاول {
SecretKeySpecsignKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
ماك mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
byte[] RawHmac = mac.doFinal(data.getBytes());
Base64 base64 = new Base64();
@SuppressWarnings("الوصول الثابت")
byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
النتيجة = سلسلة جديدة (enbytes، "utf-8")؛
} قبض (الاستثناء ه) {
printStackTrace();
}
نتيجة الإرجاع؛
}
عنوان SDK المُعدل الذي تم إنشاؤه:
انسخ رمز الكود كما يلي:
* احصل على عنوان تنزيل Object
*
*كائنparam
* اسم الكائن
* سلسلة @return تُرجع عنوان URL الذي تم تنزيله
*******/
سلسلة getUrl العامة (كائن سلسلة) {
نتيجة السلسلة = ""؛
GenerateUrlRequest generatorUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, Bucket, "/" + object);
generatorUrlRequest.setBcsSignCondition(new BCSSignCondition());
result = baiduBCS.generateUrl(generateUrlRequest);
result=result.replaceFirst("%2F", "/");
نتيجة الإرجاع؛
}
هناك أيضًا الكثير من رموز الاختبار التي قدمها المسؤول، وقمت أيضًا بتوفيرها إذا كنت بحاجة إلى ذلك، قم بتنزيلها ودراستها بنفسك، ثم قم بتغليفها واستخدامها في مشاريع فعلية لم أجدها التقدم المحرز في تحميل الملفات وآمل أن تتمكن من إخباري بما تراه، فهو أيضًا مبتدئ.