1. Introduction
Le cloud n’est pas un concept nouveau. Qu’est-ce que le cloud exactement ? Même si vous me demandez de l’expliquer clairement, je ne peux pas l’expliquer pour le moment, on l’appelle le cloud s’il est connecté à Internet. Il existe encore de nombreux fournisseurs de services cloud nationaux, et il existe deux catégories principales. L'une est un fournisseur de cloud de type hôte similaire à Alibaba Cloud, comme Wanwang et d'autres fournisseurs d'espace traditionnels, l'autre est l'hébergement d'applications, comme BAE. SAE. Par rapport aux fournisseurs d'espace tels qu'Alibaba Cloud, le niveau d'entrée pour les plates-formes d'hébergement d'applications est inférieur, offrant une bonne plate-forme de test pour la majorité des programmeurs en difficulté.
Le programme de mise à niveau logicielle dont j'étais récemment responsable impliquait plusieurs plates-formes, plusieurs fichiers et plusieurs versions. Si je construisais mon propre serveur de fichiers, la bande passante ne serait certainement pas en mesure de répondre aux besoins de l'entreprise. J'ai donc commencé à utiliser le service Baidu Cloud Storage BCS. Cela fonctionne normalement maintenant, mais les convulsions intermittentes occasionnelles m'ont obligé à me tourner vers Alibaba Cloud Storage, après tout, les choses commerciales doivent encore être commercialisées et professionnelles. Au moins s'il y a un problème, contrairement à Baidu Cloud Storage, le service client ne le peut pas. être trouvé. Mais en tant qu’utilisation technique, parlons de l’utilisation du stockage cloud.
2. Étapes d'utilisation
1. Enregistrez un compte Baidu
Je n’ai pas besoin de dire ça.
2. Appelé un développeur
Entrez « Baidu Open Cloud Platform » (je ne connais pas Baidu moi-même). Si vous n'êtes pas un développeur après vous être connecté, vous serez invité à vous inscrire en tant que développeur. Après avoir rempli les informations, tout ira bien.
3. Créez une application
Accédez à la page d'accueil de Baidu Open Cloud et créez un moteur d'application BAE Lors de la création, ne choisissez pas la solution : utilisez BAE sauf si vous disposez encore d'un site Web sur lequel vous accrocher. C'est bon d'essayer. Ensuite, après être entré, sélectionnez le stockage cloud et créez un bucket (cela sera expliqué plus tard).
4. Téléchargez le SDK
5. Tester le code
3. Difficultés et attentions
1. Un SDK qui n'a pas d'API ou qui n'a pas d'API détaillée nécessite beaucoup d'énergie pour être lu, et ce n'est même pas aussi pratique que de lire les blogs d'autres personnes.
2. Compréhension des concepts
Bucket : Après avoir créé une application, un bucket sera créé. Qu'est-ce qu'un bucket ? Considérez-le comme une lettre de lecteur sous Windows, tout comme vous créez un lecteur D, dans lequel vous pouvez également placer des fichiers et des dossiers. être créé. Il est en fait inexact de dire que Bucket est une lettre de lecteur car il ressemble plus au répertoire racine sous Linux. Lors de la lecture de votre fichier, vous ne pouvez pas dire que mon fichier est : 1.txt. Au lieu de cela : /1.txt. Déclaré dans le code.
Objet : Un objet représente un fichier. Il se compose de nombreuses méta-informations et blocs de fichiers (se référer au système de fichiers). Les méta-informations incluent le nom du fichier, la taille du fichier, l'heure, etc. Avant d'utiliser Object, n'oubliez pas "/" ;
3. Télécharger l'authentification
L'utilisation de requêtes http pour télécharger des fichiers privés nécessite des paramètres d'authentification. Si vous lisez l'API officielle, elle explique uniquement le processus de cryptage de l'autorisation, mais il n'y a pas de version Java. Je n'expliquerai pas spécifiquement les étapes d'autorisation, je fournirai également l'implémentation Java. , comme il a été implémenté dans le SDK, il y a juste un petit problème. Le "/" entre le bucket et le nom de fichier de l'adresse de téléchargement générée par le SDK est codé, ce qui entraînera l'échec du téléchargement de certains téléchargeurs. Par exemple, QQ mobile ne peut pas télécharger. Doit être traité à nouveau.
4. Clé API et clé secrète
Accédez à l'application via ceci.
4. Mise en œuvre détaillée
1. Forfait guide
2. Une partie du code
Autorisation:
Copiez le code comme suit :
classe publique BCSHelper {
private String host = "";//Nom d'hôte : bcs.duapp.com
private String accessKey = "" //Peut être vu dans l'application que vous créez
private String secretKey = "" ;
private String bucket = "";//Le nom du bucket que vous avez créé
BaiduBCS privé baiduBCS = null ;
public BCSHelper() {
this.host = Configuration.getHost();
this.accessKey = Configuration.getAccessKey();
this.secretKey = Configuration.getSecretKey();
this.bucket = Configuration.getBucket();
Informations d'identification BCSCredentials = new BCSCredentials(accessKey, secretKey);
baiduBCS = new BaiduBCS (informations d'identification, hôte) ;
baiduBCS.setDefaultEncoding("UTF-8"); // UTF-8 par défaut
}
Téléchargez et supprimez des fichiers :
Copiez le code comme suit :
/**
* Télécharger des fichiers sur BCS
*
* @return boolean true indique que le téléchargement a réussi
* Fichier @param
* Fichiers à télécharger
*
*******/
public booléen putObject (fichier fichier) {
résultat booléen = vrai ;
essayer {
//Doit commencer par "/"
Requête PutObjectRequest = new PutObjectRequest(bucket, "/" + file.getName(), file);
//Définir les méta-informations de l'objet
Métadonnées ObjectMetadata = new ObjectMetadata();
request.setMetadata(métadonnées);
baiduBCS.putObject(requête);
LoggerService.addLoggerByOperate("BCS : télécharger des fichiers vers BCS :"+file.getName());
} attraper (Exception e) {
résultat = faux ;
LoggerService.addLoggerByError(e.getMessage());
e.printStackTrace();
}
renvoyer le résultat ;
}
/**
* Supprimer les fichiers sur BCS par nom d'objet
*
* Objet @param
* Nom de l'objet
* @return boolean true suppression réussie
* *****/
public boolean deleteObject (objet String) {
résultat booléen = vrai ;
essayer {
si (existeObject(objet)) {
baiduBCS.deleteObject(seau, "/" + objet);
LoggerService.addLoggerByOperate("BCS : Supprimer les fichiers sur BCS :"+object);
}
} attraper (Exception e) {
résultat = faux ;
e.printStackTrace();
LoggerService.addLoggerByError(e.getMessage());
}
renvoyer le résultat ;
}
Déterminez si l'objet existe :
Copiez le code comme suit :
/**
* Déterminer si le fichier existe dans BCS
*
* Objet @param
* nom de l'objet
* @return boolean true indique l'existence
****/
public boolean existObject (objet String) {
résultat booléen = faux ;
essayer {
result = baiduBCS.doesObjectExist(bucket, "/" + object);
} attraper (Exception e) {
e.printStackTrace();
}
renvoyer le résultat ;
}
Générez une adresse de téléchargement écrite par vous-même :
Copiez le code comme suit :
/**
* Obtenez l'adresse de téléchargement de l'objet
*
* Objet @param
* Nom de l'objet
* @return String Renvoie l'URL téléchargée
*******/
public String getUrl (objet String) {
// Contenu qui doit être chiffré
Données de chaîne = "MBO" + "/n" + "Method=GET" + "/n" + "Bucket=" + bucket + "/n" + "Object=/" + object + "/n" ;
//Résultat crypté
Chaîne hmacsha1 = getHmacSHA1(secretKey, data);
// Construire le paramètre de signe
Signe de chaîne = "MBO :" + accessKey + ":" + hmacsha1;
// URL
Générateur StringBuilder = new StringBuilder();
builder.append("http://");
builder.append(hôte);
builder.append("/");
builder.append (seau);
builder.append("/");
builder.append(objet);
builder.append("?sign=");
builder.append(signe);
return builder.toString();
}
// Chiffrement des signatures
chaîne privée getHmacSHA1 (chaîne secretKey, données de chaîne) {
Résultat de la chaîne = "" ;
essayer {
SecretKeySpec signatureKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
Base64 base64 = nouvelle Base64();
@SuppressWarnings("accès statique")
byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
result = new String(enbytes, "utf-8");
} attraper (Exception e) {
e.printStackTrace();
}
renvoyer le résultat ;
}
Adresse générée par le SDK modifiée :
Copiez le code comme suit :
* Obtenez l'adresse de téléchargement de l'objet
*
* Objet @param
* Nom de l'objet
* @return String Renvoie l'URL téléchargée
*******/
public String getUrl (objet String) {
Résultat de la chaîne = "" ;
GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest (HttpMethodName.GET, bucket, "/" + objet);
generateUrlRequest.setBcsSignCondition(new BCSSignCondition());
résultat = baiduBCS.generateUrl(generateUrlRequest);
result=result.replaceFirst("%2F", "/");
renvoyer le résultat ;
}
Il existe également de nombreux codes de test qui ont été fournis par le responsable, et je les ai également fournis si vous en avez besoin, téléchargez-les et étudiez-les vous-même, puis encapsulez-les et utilisez-les dans des projets réels que je n'ai pas trouvés. la progression du téléchargement des fichiers. J'espère que vous pourrez me dire ce que vous voyez, après tout, c'est aussi un débutant.