Good people I have the following problem. The controller receives an HttpPostedFileBase and sends it to Azure and for this I need to write to a temporary folder.
I would like to know of a more elegant solution where you do not need to write to the Server disk. Summarizing send the HttpPostedFileBase direct to Azure with CloudFile. Because this solution seems to me to be more performative, if any idea please share.
Follow the code below:
CloudStorageAccount _azureFile;
public UploadArquivo()
{
_azureFile = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("azureFile"));
}
public void uploadArquivoAzure(HttpPostedFileBase arquivo, string caminhoArquivo)
{
//Escreve arquivo no caminho temporario
arquivo.SaveAs(caminhoArquivo);
// Criando o cliente do azure para acessar o storage
CloudFileClient clienteArquivos = _azureFile.CreateCloudFileClient();
// acessando o serviço de arquivos
CloudFileShare compartilhamentoArquivos = clienteArquivos.GetShareReference("servicoArquivo");
if (compartilhamentoArquivos.Exists())
{
// cria o diretorio raiz
CloudFileDirectory dirRaiz = compartilhamentoArquivos.GetRootDirectoryReference();
// criando o diretorio especifico
CloudFileDirectory diretorio = dirRaiz.GetDirectoryReference("compartilhamentoArquivos");
if (diretorio.Exists())
{
//Setando o arquivo e caminho do mesmo caminho do arquivo
CloudFile arquivoEnviado = diretorio.GetFileReference(arquivo.FileName);
arquivoEnviado.UploadFromFile(arquivo.);
//arquivoEnviado.DownloadToFile(caminhoArquivo, FileMode.Create);
//arquivoEnviado.UploadFromFile(caminhoArquivo);
}
}
}
Any hint would help a lot.