Azure Blob Storage ?
- Azure의 저장소로 사용되는 서비스
- 대용량의 정형화되지 않은 데이터를 저장하기에 최적화된 저장소
MS에서 소개하는 Blob Storage 정보는 아래와 같다.
- 브라우저에 이미지 또는 문서 직접 제공
- 분산 액세스용 파일 저장.
- 비디오 및 오디오 스트리밍.
- 로그 파일에 쓰기
- 백업/복원, 재해 복구 및 보관용 데이터 저장
- 온-프레미스 또는 Azure 호스팅 서비스에서 분석하기 위한 데이터 저장.
<참고> https://docs.microsoft.com/ko-kr/azure/storage/blobs/storage-blobs-introduction
Azure 제공하는 Storage 서비스는 Blob Storage 이외에도 다양하게 있는데, Blob storage 서비스를 사용에 파일을 관리하기로 했다.
1. blob 컨테이너 생성하기
- blob은 파일 디렉토리 구조로 구성되어있다.
- storage 계정 > 컨테이너 생성 > 생성한 컨테이너에 이미지 및 파일들이 업로드된다.
- 스토리지 계정에서 이미지 및 파일을 업로드할 새로운 컨테이너를 생성한다.
- 업로드된 파일 url 경로에 접근 가능하도록 구성할 예정이므로, 공용 액세스 수준을 풀어주었다.
2. blob 컨테이너 접근하기
- 생성한 blob 컨테이너에 접근하기 위해서 컨테이너를 만들었던 스토리지의 액세스 키가 필요하다.
- 키 및 연결 문자열 표시를 눌러 연결 문자열을 복사해두자. 복사된 문자열은 컨테이너 접근에 사용된다.
3. [.Net] blob 스토리지에 파일 업로드 하기
(1) Nuget 으로 Azure blob 라이브러리 다운로드
Install-Package Microsoft.Azure.Storage.Blob
- 설치가 완료되면 정상적으로 라이브러리 참조를 확인한다.
(2) Azure Blob 접근
Azure Blob에 접근하기 위해, 생성한 컨테이너 이름과, 액세스 키를 설정 정보에 세팅해 사용할 수 있도록 한다.
- AzureContainerName : 생성한 컨테이너 이름
- AzureSecretKey : 복사한 액세스 키 문자열
(3) Test
UploadController 추가
using AzureBlob.Infra;
using System.Web;
using System.Web.Mvc;
namespace AzureBlob.Controllers
{
public class UploadController : Controller
{
[HttpPost]
public void UploadFile(HttpPostedFileBase UploadFile)
{
AzureFileClient azureFileUpload = new AzureFileClient();
azureFileUpload.Upload(UploadFile);
}
}
}
AzureFileClient 추가 - 파일 업로드
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
using System.Configuration;
using System.IO;
using System.Web;
namespace AzureBlob.Infra
{
public class AzureFileClient
{
public void Upload(HttpPostedFileBase UploadFile)
{
var fileName = Path.GetRandomFileName(); // 파일 이름 Random으로 변경
UploadAzureClient(fileName, UploadFile);
}
private string UploadAzureClient(string fileName, HttpPostedFileBase UploadFile)
{
var blob = GetAzureContainer(fileName);
blob.Properties.ContentType = UploadFile.ContentType;
using (var fileStream = UploadFile.InputStream)
{
blob.UploadFromStream(fileStream);
}
return blob.Uri.AbsoluteUri;
}
private CloudBlockBlob GetAzureContainer(string fileName)
{
// 1.get access key
var accessKey = ConfigurationManager.AppSettings["AzureSecretKey"];
//2. get Container
var blobContainer = ConfigurationManager.AppSettings["AzureContainerName"];
//3. AzureCloud에서 Storage Service acessKey 접근
var AzureAccountInfo = CloudStorageAccount.Parse(accessKey);
//4. container 접근
var container = AzureAccountInfo.CreateCloudBlobClient().GetContainerReference(blobContainer);
return container.GetBlockBlobReference(fileName);
}
}
}
postman 테스트
[ 결과 ] blob 스토리지에 정상적으로 업로드
- Container를 private이 아닌 접근 가능하게 해 blob Uri로 업로드한 이미지 파일에 접근 가능하다.
300x250
'DevelopNote > 기타' 카테고리의 다른 글
[Git] 프로젝트 Repository Public <-> Private 전환 (0) | 2024.05.05 |
---|---|
[ajax] 새로 고침 없이 첨부 파일과 폼 데이터 전송하기 (0) | 2022.11.13 |
intellij - spring boot, h2 database 연동 (0) | 2021.09.25 |
parser 사이트, JSON 정렬, query 정렬 (0) | 2021.07.19 |
[MSSQL] - insert or update(있으면 업데이트 없으면 삽입) - exists (0) | 2021.07.03 |