ASP.NET Core에서 Swagger를 사용하여 파일 업로드 API
7133 단어 swaggerC#ASP.NET_Core
/// <summary>
/// Swagger UI 用ファイルアップロードフィルタ
/// </summary>
public class UploadFileOperationFilter : IOperationFilter
{
/// <summary>
/// フィルタ適用
/// </summary>
/// <param name="operation">オペレーション</param>
/// <param name="context">コンテキスト</param>
public void Apply(Operation operation, OperationFilterContext context)
{
operation.Consumes.Add("multipart/form-data");
operation.Parameters = new IParameter[]
{
new NonBodyParameter()
{
Name = "file",
In = "formData",
Required = true,
Type = "file",
Description = "アップロードするファイル",
}
};
return;
}
}
이러한 필터 클래스를 작성해, 업로드 API 의 메소드에
SwaggerOperationFilter
속성을 개입시켜 지정한다.
[Produces("application/json")]
[Route("api/v1/uploadfile")]
public class UploadController : Controller
{
[HttpPost]
[SwaggerOperationFilter(typeof(UploadFileOperationFilter))]
public async Task<IActionResult> UploadFile(IFormFile file)
{
// ここではオリジナルのファイル名の拡張子を取り出し
// 格納するときは GUID をベースの名前に変えている。
var orgFileName = ContentDispositionHeaderValue
.Parse(file.ContentDisposition)
.FileName.Trim('"');
var uploadFileName = Guid.NewGuid().ToString() + Path.GetExtension(orgFileName);
var url = await UploadToStorage(file.OpenReadStream(), uploadFileName);
return Json(url);
}
private async Task<string> UploadToStorage(Stream stream, string fileName)
{
// stream からデータを取り、
// それを適当なストレージに格納し、
// その URL を返す 処理を実装。
return "https://xxx.xxx.xxx/xxx/" + fileName;
}
}
UI 에서는 이러한 표시에.
[찾아보기]에서 파일을 지정하여 보내면 Response에 주소가 반환됩니다.
#처음의 샘플 코드에서는, 실제로 보존하는 처리는 구현하고 있지 않습니다만.
Reference
이 문제에 관하여(ASP.NET Core에서 Swagger를 사용하여 파일 업로드 API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/v-nakamuray/items/1aff02cd766c0b488a57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)