Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- blob파일업로드
- sql server 포트번호
- export to excel
- c# 엑셀추출
- blobcontainer
- sql
- 프로그래머스SQL
- 백준
- 코테유형
- asp.net
- BLOB
- blob다운로드오류
- frontend
- 투포인터예제
- 코딩테스트유형
- 프로그래머스
- 로컬포트번호
- 파이썬
- 취업코데
- 코딩테스트
- sql풀이
- 알고리즘
- 코테
- c#blob
- C#
- 파이썬백준
- 프로그래머스MYSQL
- mysql
- queryasync
- blob파일다운로드
Archives
- Today
- Total
개발새발
C# Blob 파일 업로드와 다운로드, 파일 삭제 코드 구현 본문
Blob에 파일 업로드, 다운로드, 파일 삭제하는 코드입니다.
Type은 Blob Containers에서도 특정 Blob에 접근하기 위해 사용한 식별자로 생략가능합니다.
1. BlobStorageConnection의 경우 appsettings.json에 blob connection을 작성
2. BlobRepository 별도의 레파지토리를 만들어서 작성해서 startup.cs에 등록
3. 코드
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.IO;
using System.Threading.Tasks;
using Azure;
namespace Site.BlobRepository
{
public interface IBlobRepository
{
Task<string> UploadBlob(IFormFile file, string type);
Task<Stream> DownloadBlob(string file, string type);
Task<bool> DeleteBlob(string file, string type);
}
public class BlobRepository : IBlobRepository
{
private readonly BlobServiceClient _blob;
public BlobRepository(IConfiguration configuration)
{
_blob = new BlobServiceClient(configuration.GetConnectionString("BlobStorageConnection"));
}
public async Task<string> UploadBlob(IFormFile file, string type)
{
BlobContainerClient containerClient = _blob.GetBlobContainerClient(type);
string blobName = $"{blob 내 파일명 있을 경우 작성, 없으면 생략}/{Guid.NewGuid()}{Path.GetExtension(file.FileName)}";
string blobPath = $"{blobName}";
BlobClient blobClient = containerClient.GetBlobClient(blobPath);
using (Stream stream = file.OpenReadStream())
{
await blobClient.UploadAsync(stream, new BlobUploadOptions
{
HttpHeaders = new BlobHttpHeaders { ContentType = file.ContentType }
});
}
return blobClient.Uri.ToString();
}
public async Task<Stream> DownloadBlob(string file, string type)
{
string blobPath = $"{Path.GetFileName(file)}";
BlobContainerClient containerClient = _blob.GetBlobContainerClient(type);
BlobClient blobClient = containerClient.GetBlobClient(blobPath);
BlobDownloadInfo blobDownloadInfo = await blobClient.DownloadAsync();
return blobDownloadInfo.Content;
}
public async Task<bool> DeleteBlob(string file, string type)
{
try
{
string blobPath = $"{Path.GetFileName(file)}";
BlobContainerClient containerClient = _blob.GetBlobContainerClient(type);
BlobClient blobClient = containerClient.GetBlobClient(blobPath);
await blobClient.DeleteAsync();
return true;
}
catch (RequestFailedException)
{
return false;
}
}
}
}
'개발 > Back' 카테고리의 다른 글
SQL Server 로컬 인스턴스 사용 포트 번호 찾는 방법 (0) | 2024.08.28 |
---|---|
export large data to Excel file in C# asp.net Core 대용량 데이터 엑셀 추출, 메모리 사용량 (0) | 2024.08.27 |
Blob fetch download. 파일 다운로드는 되지만 파일이 잘못되어 열리지 않는 오류 발생 (0) | 2024.04.17 |
[Asp.Net] Dapper QueryAsync splitOn Multi mapping 쿼리 데이터 리스트 그룹화 바인딩 (0) | 2024.04.08 |
Comments