programing tip

ASP.Net MVC-저장하지 않고 HttpPostedFileBase에서 파일 읽기

itbloger 2020. 12. 4. 07:57
반응형

ASP.Net MVC-저장하지 않고 HttpPostedFileBase에서 파일 읽기


파일 업로드 옵션을 사용하여 파일을 업로드하고 있습니다. 그리고이 파일을 View에서 Controller로 POST 방법으로 직접 보냅니다.

    [HttpPost]
    public ActionResult Page2(FormCollection objCollection)
    {
        HttpPostedFileBase file = Request.Files[0];
    }

메모장 파일을 업로드하고 있다고 가정합니다. 어떻게이 파일을 읽고 해당 파일을 저장하지 않고 문자열 작성기에이 텍스트를 추가합니까? ...

SaveAs이 파일 이후 에이 파일을 읽을 수 있다는 것을 알고 있습니다. 하지만 HttpPostedFileBase저장하지 않고이 파일을 어떻게 읽 습니까?


이것은 httpPostedFileBase 클래스를 사용하여 수행 할 수 있습니다. 여기에 지정된대로 HttpInputStreamObject반환 합니다 .

스트림을 바이트 배열로 변환 한 다음 파일 내용을 읽을 수 있습니다.

다음 링크를 참조하십시오

http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx ]

도움이 되었기를 바랍니다

업데이트 :

HTTP 호출에서 얻은 스트림은 읽기 전용 순차 (검색 불가능)이고 FileStream은 읽기 / 쓰기 검색 가능입니다. 먼저 HTTP 호출에서 전체 스트림을 바이트 배열로 읽어 들인 다음 해당 배열에서 FileStream을 만들어야합니다.

여기 에서 찍은

// Read bytes from http input stream
BinaryReader b = new BinaryReader(file.InputStream);
byte[] binData = b.ReadBytes(file.ContentLength);

string result = System.Text.Encoding.UTF8.GetString(binData);

대안은 StreamReader를 사용하는 것입니다.

public void FunctionName(HttpPostedFileBase file)
{
    string result = new StreamReader(file.InputStream).ReadToEnd();
}

Thangamani Palanisamy 답변을 약간 변경하여 Binary 판독기를 폐기하고 그의 의견에서 입력 길이 문제를 수정합니다.

string result = string.Empty;

using (BinaryReader b = new BinaryReader(file.InputStream))
{
  byte[] binData = b.ReadBytes(file.ContentLength);
  result = System.Text.Encoding.UTF8.GetString(binData);
}

참고 URL : https://stackoverflow.com/questions/16030034/asp-net-mvc-read-file-from-httppostedfilebase-without-save

반응형