1. Introdução
A nuvem não é um conceito novo. O que é exatamente a nuvem, mesmo que você me peça para explicar claramente, por enquanto, ela é chamada de nuvem se estiver conectada à Internet. Ainda existem muitos provedores de serviços de nuvem domésticos, e há duas categorias principais. Uma é um provedor de nuvem semelhante ao Alibaba Cloud, como Wanwang e outros provedores de espaço tradicionais, a outra é a plataforma de hospedagem de aplicativos, como a BAE. SAE. Em comparação com provedores de espaço como o Alibaba Cloud, o nível de entrada para plataformas de hospedagem de aplicativos é mais baixo, fornecendo uma boa plataforma de testes para a maioria dos programadores com dificuldades.
O programa de atualização de software pelo qual fui recentemente responsável envolvia várias plataformas, vários arquivos e várias versões. Se eu construísse meu próprio servidor de arquivos, a largura de banda definitivamente não seria capaz de atender às necessidades de negócios, então comecei a usar o serviço Baidu Cloud Storage BCS. . Funciona normalmente agora, mas as ocasionais convulsões intermitentes me forçaram a recorrer ao Alibaba Cloud Storage, afinal, as coisas comerciais ainda precisam ser comercializadas e profissionais. Pelo menos se houver um problema, ao contrário do Baidu Cloud Storage, o atendimento ao cliente não pode. ser encontrado. Mas como uso técnico, vamos falar sobre o uso de armazenamento em nuvem.
2. Etapas de uso
1. Registre uma conta Baidu
Eu não preciso dizer isso.
2. Chamei um desenvolvedor
Digite "Baidu Open Cloud Platform" (eu não conheço o Baidu). Se você não for um desenvolvedor após fazer login, será solicitado que você se registre como desenvolvedor. Após preencher as informações, tudo ficará bem.
3. Crie um aplicativo
Vá para a página inicial do Baidu Open Cloud e crie um mecanismo de aplicativo BAE. Ao criar, não escolha a solução: use o BAE, a menos que você ainda tenha um site para manter. Não há problema em tentar. Depois de entrar, selecione o armazenamento em nuvem e crie um Bucket (será explicado mais tarde).
4. Baixe o SDK
5. Código de teste
3. Dificuldades e Atenções
1. Um SDK que não possui API ou não possui uma API detalhada requer muita energia para ser lido e não é tão conveniente quanto ler blogs de outras pessoas.
2. Compreensão de conceitos
Bucket: Depois de criar um aplicativo, um Bucket será criado. O que é um Bucket? Pense nele como uma letra de unidade no Windows, assim como você cria uma unidade D, onde você pode colocar arquivos e pastas. ser criado. Na verdade, é impreciso dizer que Bucket é uma letra de unidade porque é mais parecido com o diretório raiz do Linux. Ao ler seu arquivo, você não pode dizer que meu arquivo é: 1.txt. Em vez disso: /1.txt. Declarado no código.
Objeto: Um objeto representa um arquivo. Consiste em muitas metainformações e blocos de arquivo (consulte o sistema de arquivos, etc.). Antes de usar Object, lembre-se de "/";
3. Baixe a autenticação
Usar solicitações HTTP para baixar arquivos privados requer parâmetros de autenticação. Se você ler a API oficial, ela apenas explica o processo de criptografia de autorização, mas não há versão Java. Não explicarei especificamente as etapas de autorização. , por ter sido implementado no SDK, há apenas um pequeno problema. O "/" entre o bucket e o nome do arquivo do endereço de download gerado pelo SDK é codificado, o que fará com que alguns downloaders falhem no download. Por exemplo, o QQ móvel não pode fazer o download. Precisa ser processado novamente.
4. Chave API e chave secreta
Acesse o aplicativo através deste.
4. Implementação detalhada
1. Pacote de guia
2. Parte do código
Autorização:
Copie o código do código da seguinte forma:
classe pública BCSHelper {
private String host = "";//Nome do host: bcs.duapp.com
private String accessKey = ""; //Pode ser visto na aplicação que você cria
private String secretKey = "";
private String bucket = "";//O nome do bucket que você criou
privado BaiduBCS baiduBCS = nulo;
public BCSHelper() {
this.host = Configuration.getHost();
this.accessKey = Configuration.getAccessKey();
this.secretKey = Configuration.getSecretKey();
this.bucket = Configuration.getBucket();
Credenciais BCSCredentials = novo BCSCredentials(accessKey, secretKey);
baiduBCS = novo BaiduBCS(credenciais, host);
baiduBCS.setDefaultEncoding("UTF-8"); // Padrão UTF-8
}
Carregar e excluir arquivos:
Copie o código do código da seguinte forma:
/**
* Carregar arquivos para BCS
*
* @return boolean true indica que o upload foi bem-sucedido
* @param arquivo
*Arquivos a serem carregados
*
*******/
public boolean putObject(Arquivo arquivo) {
resultado booleano = verdadeiro;
tentar {
//Deve começar com "/"
Solicitação PutObjectRequest = new PutObjectRequest(bucket, "/" + file.getName(), arquivo);
//Definir meta informações do objeto
Metadados ObjectMetadata = new ObjectMetadata();
request.setMetadata(metadados);
baiduBCS.putObject(solicitação);
LoggerService.addLoggerByOperate("BCS: Carregar arquivos para BCS:"+file.getName());
} catch (Exceção e) {
resultado = falso;
LoggerService.addLoggerByError(e.getMessage());
e.printStackTrace();
}
resultado de retorno;
}
/**
* Exclua arquivos no BCS por nome do objeto
*
* @param objeto
* Nome do objeto
* @return boolean true exclusão bem-sucedida
* *****/
public boolean deleteObject (objeto String) {
resultado booleano = verdadeiro;
tentar {
if (existObject(objeto)) {
baiduBCS.deleteObject(balde, "/" + objeto);
LoggerService.addLoggerByOperate("BCS: Excluir arquivos no BCS:"+objeto);
}
} catch (Exceção e) {
resultado = falso;
e.printStackTrace();
LoggerService.addLoggerByError(e.getMessage());
}
resultado de retorno;
}
Determine se o objeto existe:
Copie o código do código da seguinte forma:
/**
* Determine se o arquivo existe no BCS
*
* @param objeto
* nome do objeto
* @return boolean true indica existência
****/
public boolean existObject (objeto String) {
resultado booleano = falso;
tentar {
resultado = baiduBCS.doesObjectExist(balde, "/" + objeto);
} catch (Exceção e) {
e.printStackTrace();
}
resultado de retorno;
}
Gere o endereço de download escrito por você:
Copie o código do código da seguinte forma:
/**
* Obtenha o endereço de download do objeto
*
* @param objeto
* Nome do objeto
* @return String Retorna a URL baixada
*******/
public String getUrl(objeto String) {
// Conteúdo que precisa ser criptografado
Dados de string = "MBO" + "/n" + "Método=GET" + "/n" + "Bucket=" + bucket + "/n" + "Object=/" + object + "/n";
//Resultado criptografado
String hmacsha1 = getHmacSHA1(secretKey, dados);
//Constrói parâmetro de sinal
Sinal de string = "MBO:" + accessKey + ":" + hmacsha1;
//url
Construtor StringBuilder = new StringBuilder();
construtor.append("http://");
construtor.append(host);
construtor.append("/");
construtor.append(balde);
construtor.append("/");
construtor.append(objeto);
construtor.append("?sign=");
construtor.append(sinal);
return construtor.toString();
}
//Criptografia de assinatura
string privada getHmacSHA1(String secretKey, String dados) {
Resultado da string = "";
tentar {
SecretKeySpec SigningKey = new SecretKeySpec(secretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
byte[] rawHmac = mac.doFinal(data.getBytes());
Base64 base64 = new Base64();
@SuppressWarnings("acesso estático")
byte[] enbytes = base64.encodeBase64Chunked(rawHmac);
resultado = new String(enbytes, "utf-8");
} catch (Exceção e) {
e.printStackTrace();
}
resultado de retorno;
}
Endereço gerado pelo SDK modificado:
Copie o código do código da seguinte forma:
* Obtenha o endereço de download do objeto
*
* @param objeto
* Nome do objeto
* @return String Retorna a URL baixada
*******/
public String getUrl(objeto String) {
Resultado da string = "";
GenerateUrlRequest generateUrlRequest = new GenerateUrlRequest(HttpMethodName.GET, bucket, "/" + objeto);
generateUrlRequest.setBcsSignCondition(new BCSSignCondition());
resultado = baiduBCS.generateUrl(generateUrlRequest);
resultado = resultado.replaceFirst("%2F", "/");
resultado de retorno;
}
Há também muitos códigos de teste que foram fornecidos pelo oficial, e eu também os forneci, se necessário, baixe-os e estude-os você mesmo, e então encapsule-os e use-os em projetos reais que não encontrei. o andamento do upload dos arquivos, espero que você possa me dizer o que vê, afinal ele também é um novato.