1. Введение
Облако — это не новая концепция. Что такое облако? Даже если вы попросите меня объяснить это ясно, я пока не могу это объяснить, если оно подключено к Интернету. По-прежнему существует множество отечественных поставщиков облачных услуг, и есть две основные категории: одна — это облачный провайдер, подобный Alibaba Cloud, такой как Wanwang и другие традиционные провайдеры космических услуг, а другая — платформы хостинга приложений, такие как BAE. САЭ. По сравнению с такими поставщиками услуг, как Alibaba Cloud, начальный уровень платформ хостинга приложений ниже, что обеспечивает хорошую платформу для тестирования для большинства начинающих программистов.
Программа обновления программного обеспечения, за которую я недавно отвечал, включала несколько платформ, несколько файлов и несколько версий. Если бы я построил собственный файловый сервер, пропускная способность определенно не смогла бы удовлетворить потребности бизнеса, поэтому я начал использовать сервис Baidu Cloud Storage BCS. Сейчас все работает нормально, но периодические судороги заставили меня обратиться к облачному хранилищу Alibaba, в конце концов, коммерческие вещи все еще должны быть коммерциализированы и профессиональны, по крайней мере, если возникнет проблема, в отличие от облачного хранилища Baidu, служба поддержки клиентов не сможет этого сделать. быть найден. Но с технической точки зрения давайте поговорим об использовании облачного хранилища.
2. Этапы использования
1. Зарегистрируйте учетную запись Baidu
Мне не нужно этого говорить.
2. Позвонил разработчику
Введите «Baidu Open Cloud Platform» (я сам не знаю Baidu. Если вы не являетесь разработчиком после входа в систему, вам будет предложено зарегистрироваться в качестве разработчика. После заполнения информации все будет ок).
3. Создайте заявку
Перейдите на домашнюю страницу Baidu Open Cloud и создайте механизм приложения BAE. При создании не выбирайте решение: используйте BAE, если у вас еще нет веб-сайта, на котором можно держаться. Это нормально, попробовать. Затем после входа выберите облачное хранилище и создайте корзину (будет объяснено позже).
4. Загрузите SDK
5. Тестовый код
3. Трудности и внимание
1. SDK, не имеющий API или не имеющий подробного API, требует много энергии для чтения, и это даже не так удобно, как чтение чужих блогов.
2. Понимание концепций
Бакет: после создания приложения будет создан бакет. Что такое бакет? Думайте об этом как о букве диска в Windows, точно так же, как вы создаете диск D, куда вы можете помещать файлы и папки. Вы также можете использовать другие бакеты. быть создан. На самом деле неверно говорить, что Bucket — это буква диска, поскольку он больше похож на корневой каталог в Linux. При чтении вашего файла вы не можете сказать, что мой файл: 1.txt. Вместо этого: /1.txt. Заявлено в кодексе.
Объект: Объект представляет собой файл. Он состоит из множества метаинформации и файловых блоков (см. файловую систему). Метаинформация включает имя файла, размер файла, время и т. д. Прежде чем использовать Object, обязательно запомните «/»;
3. Загрузите аутентификацию
Для использования http-запросов для загрузки личных файлов требуются параметры аутентификации. Если вы читаете официальный API, там объясняется только процесс шифрования авторизации, но Java-версии нет. Я не буду конкретно объяснять шаги авторизации. Я также привожу реализацию Java. , поскольку это реализовано в SDK, есть небольшая проблема. Символ «/» между сегментом и именем файла с адресом загрузки, созданным SDK, закодирован, что может привести к сбою загрузки некоторых загрузчиков. Например, мобильный QQ не может загрузить. Приходится обрабатывать заново.
4. Ключ API и секретный ключ.
Получите доступ к приложению через это.
4. Детальная реализация
1. Пакет гидов
2. Часть кода
Авторизация:
Скопируйте код кода следующим образом:
общественный класс BCSHelper {
частная строка хост = "";//Имя хоста: bcs.duapp.com
Private String accessKey = "" //Можно увидеть в создаваемом вами приложении.
частная строка secretKey = "";
Private String Bucket = "";//Имя созданного вами бакета
частный BaiduBCS BaiduBCS = ноль;
общественный BCSHelper() {
this.host = Configuration.getHost();
this.accessKey = Configuration.getAccessKey();
this.secretKey = Configuration.getSecretKey();
this.bucket = Configuration.getBucket();
Учетные данные BCSCredentials = новые BCSCredentials (accessKey, secretKey);
baiduBCS = новый BaiduBCS (учетные данные, хост);
baiduBCS.setDefaultEncoding("UTF-8"); // UTF-8 по умолчанию;
}
Загружать и удалять файлы:
Скопируйте код кода следующим образом:
/**
* Загрузка файлов в BCS
*
* @return boolean true указывает на успешную загрузку.
* файл @param
* Файлы для загрузки
*
*******/
public boolean putObject(File file) {
логический результат = правда;
пытаться {
//Должен начинаться с "/"
Запрос PutObjectRequest = новый PutObjectRequest(ведро, "/" + file.getName(), файл);
//Устанавливаем метаинформацию объекта
Метаданные ObjectMetadata = новые ObjectMetadata();
request.setMetadata(метаданные);
baiduBCS.putObject(запрос);
LoggerService.addLoggerByOperate("BCS: загрузить файлы в BCS:"+file.getName());
} catch (Исключение е) {
результат = ложь;
LoggerService.addLoggerByError(e.getMessage());
е.printStackTrace();
}
вернуть результат;
}
/**
* Удаление файлов в BCS по имени объекта.
*
* объект @param
* Имя объекта
* @return boolean true удаление успешно
* *****/
public boolean deleteObject(String object) {
логический результат = правда;
пытаться {
если (existObject(объект)) {
baiduBCS.deleteObject(ведро, "/" + объект);
LoggerService.addLoggerByOperate("BCS: Удалить файлы в BCS:"+object);
}
} catch (Исключение е) {
результат = ложь;
е.printStackTrace();
LoggerService.addLoggerByError(e.getMessage());
}
вернуть результат;
}
Определите, существует ли объект:
Скопируйте код кода следующим образом:
/**
* Определить, существует ли файл в BCS.
*
* объект @param
* имя объекта
* @return boolean true указывает на существование
* ***/
общественное логическое существованиеОбъект (объект String) {
логический результат = ложь;
пытаться {
результат = baiduBCS.doesObjectExist(ведро, "/" + объект);
} catch (Исключение е) {
е.printStackTrace();
}
вернуть результат;
}
Создайте адрес загрузки, написанный вами:
Скопируйте код кода следующим образом:
/**
* Получить адрес загрузки объекта
*
* объект @param
* Имя объекта
* @return String Возвращает загруженный URL-адрес.
*******/
общественная строка getUrl (объект String) {
// Контент, который необходимо зашифровать
Строковые данные = "MBO" + "/n" + "Метод=GET" + "/n" + "Ведро=" + ведро + "/n" + "Объект=/" + объект + "/n";
//Зашифрованный результат
Строка hmacsha1 = getHmacSHA1(secretKey, data);
// Создаем параметр знака
Строковый знак = "MBO:" + accessKey + ":" + hmacsha1;
// URL
Строитель StringBuilder = новый StringBuilder();
builder.append("http://");
builder.append(хост);
builder.append("/");
builder.append(ведро);
builder.append("/");
builder.append(объект);
builder.append("?sign=");
builder.append(знак);
вернуть builder.toString();
}
// Шифрование подписи
частная строка getHmacSHA1 (String secretKey, String data) {
Строковый результат = "";
пытаться {
SecretKeySpec SigningKey = новый SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
Base64 base64 = новый Base64();
@SuppressWarnings("статический доступ")
byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
результат = новая строка (энбайты, «utf-8»);
} catch (Исключение е) {
е.printStackTrace();
}
вернуть результат;
}
Измененный адрес, сгенерированный SDK:
Скопируйте код кода следующим образом:
* Получить адрес загрузки объекта
*
* объект @param
* Имя объекта
* @return String Возвращает загруженный URL-адрес.
*******/
общественная строка getUrl (объект String) {
Строковый результат = "";
GenerateUrlRequestgenerateUrlRequest = новый GenerateUrlRequest(HttpMethodName.GET, ведро, "/" + объект);
генерироватьUrlRequest.setBcsSignCondition(новый BCSSignCondition());
результат = baiduBCS.generateUrl(generateUrlRequest);
result=result.replaceFirst("%2F", "/");
вернуть результат;
}
Также есть много тестовых кодов, предоставленных официальными лицами, и я их тоже предоставил, если нужно, скачайте их и изучите сами, а затем инкапсулируйте и используйте в реальных проектах. Я их не нашел. прогресс загрузки файлов. Надеюсь, вы мне расскажете, что видите, ведь он тоже новичок.