RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : Blazor: 단일 파일 업로드 코드 조각
글번호: 326
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2019/12/08 오전 7:42:42
조회수: 5778

@page "/Up"

@using BlazorInputFile
@using System.IO


@inject IFileUpload FileUpload


<h1>단일 파일 업로드 코드 조각</h1>

<BlazorInputFile.InputFile OnChange="HandleSelection"></BlazorInputFile.InputFile>

<input type="button" value="저장" @onclick="btnSave_Click" />

<p>@status</p>

@code {
    string status;

    private MemoryStream ms = new MemoryStream();
    private IFileListEntry[] selectedFiles;
    void HandleSelection(IFileListEntry[] files)
    {
        selectedFiles = files;
    }

    private async Task btnSave_Click()
    {
        var file = selectedFiles.FirstOrDefault();

        if (file != null)
        {
            await FileUpload.UploadAsync(file); 
        }

        var uploadFolder = Path.Combine(Environment.CurrentDirectory, "");

        using (var fileStream = new FileStream(Path.Combine(uploadFolder, file.Name), FileMode.Create))
        {
            await file.Data.CopyToAsync(fileStream); // 저장
        }
    }
}
 

 

using BlazorInputFile;
using Microsoft.AspNetCore.Hosting;
using System.IO;
using System.Threading.Tasks;

namespace BlazorApp9
{
    public interface IFileUpload
    {
        Task UploadAsync(IFileListEntry file);
    }

    public class FileUpload : IFileUpload
    {
        private readonly IWebHostEnvironment _environment;
        public FileUpload(IWebHostEnvironment env)
        {
            _environment = env;
        }

        public async Task UploadAsync(IFileListEntry fileEntry)
        {
            var path = Path.Combine(_environment.WebRootPath, "Upload", fileEntry.Name);
            var ms = new MemoryStream();
            await fileEntry.Data.CopyToAsync(ms);
            using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                ms.WriteTo(file);
            }
        }
    }
}
 

 


    <script src="_content/BlazorInputFile/inputfile.js"></script>
    <script src="_framework/blazor.server.js"></script>

 

 

 

Summary

=============================

Nuget에서 Preview 체크하고 BlazorInputFile 추가

=============================

<script src="_content/BlazorInputFile/inputfile.js"></script>

=============================

using BlazorInputFile;
using System.Threading.Tasks;

namespace BlazorApp.Services
{
    public interface IFileUploadService
    {
        Task UploadAsync(IFileListEntry file);
    }
}
 

=============================

using BlazorInputFile;
using Microsoft.AspNetCore.Hosting;
using System.IO;
using System.Threading.Tasks;

namespace BlazorApp.Services
{
    public class FileUploadService : IFileUploadService
    {
        private readonly IWebHostEnvironment _environment;

        public FileUploadService(IWebHostEnvironment env)
        {
            this._environment = env;
        }

        public async Task UploadAsync(IFileListEntry fileEntry)
        {
            var path = Path.Combine(_environment.WebRootPath, "Upload", fileEntry.Name);
            var ms = new MemoryStream();
            await fileEntry.Data.CopyToAsync(ms);
            using (FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write))
            {
                ms.WriteTo(file); 
            }
        }
    }
}
 

=============================

services.AddScoped<IFileUploadService, FileUploadService>();

=============================

@page "/FrmFileUploadTest"

<h3>단일 파일 업로드 코드 조각</h3>

<BlazorInputFile.InputFile OnChange="HandleSelection">
</BlazorInputFile.InputFile>

<input type="button" name="Save" value="업로드"
       @onclick="UploadClick" />
 

=============================

using BlazorApp.Services;
using BlazorInputFile;
using Microsoft.AspNetCore.Components;
using System.Linq;

namespace BlazorApp.Pages
{
    public partial class FrmFileUploadTest
    {
        [Inject]
        public IFileUploadService FileUploadServiceReference { get; set; }

        private IFileListEntry[] selectedFiles; 
        protected void HandleSelection(IFileListEntry[] files)
        {
            this.selectedFiles = files;
        }

        protected async void UploadClick()
        {
            var file = selectedFiles.FirstOrDefault();
            if (file != null)
            {
                await FileUploadServiceReference.UploadAsync(file);
            }
        }
    }
}
=============================

 

 

 

 

 

 

 

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 InvalidOperationException: A second operation s... 2019-12-23_5-22-50.png(185 KB) Administrator 2019-12-22 3797
현재글 Blazor: 단일 파일 업로드 코드 조각 - Administrator 2019-12-08 5778
다음글 [서평][도서] 홀로 성장하는 시대는 끝났다 20191028_052030.jpg(2.00 MB) Administrator 2019-10-27 4183
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3566
387 병합 알고리즘 순서도 2022-10-22 5104
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4408
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3219
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3114
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3156
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3065
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2980
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3033
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4166
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6879
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3057
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3027
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3027
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3084
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2959
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 3002
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3118
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3033
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3052
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home