2010-01-04 8 views
5

<input type="file" /> 태그를 사용하여 파일을 서버에 업로드하고 있습니다. 서버 쪽에서 파일에 액세스하여 서버에 저장하려면 어떻게합니까?asp.net의 서버 쪽 입력 유형 파일에 액세스

클라이언트 측 코드입니다 (이 파일은 이미지 파일입니다) :

<form id="form1" action="PhotoStore.aspx" enctype="multipart/form-data"> 
    <div> 
    <input type="file" id="file" onchange="preview(this)" /> 
    <input type="submit" /> 
    </div> 
</form> 

Photostore.aspx.cs 내가 JPG 파일을 업로드하려고

protected void Page_Load(object sender, EventArgs e) 
     { 
      int index = 1; 
      foreach (HttpPostedFile postedFile in Request.Files) 
      { 
       int contentLength = postedFile.ContentLength; 
       string contentType = postedFile.ContentType; 
       string fileName = postedFile.FileName; 

       postedFile.SaveAs(@"c:\test\file" + index + ".tmp"); 

       index++; 
      } 

     } 

있습니다. 저장된 파일을 볼 수 없습니다. 무슨 일 이니?

+0

winforms 또는 mvc 또는 기타? –

답변

0

ASP.NET에서 제공하는 asp : FileUpload 컨트롤을 살펴보십시오.

6

이 같은 idrunat="server" 속성을 추가해야합니다 :

<input type="file" id="MyFileUpload" runat="server" /> 

그런 다음, 서버 측에 당신이 당신에게 ContentLength, ContentType을 줄 것이다 컨트롤의 PostedFile 재산에 대한 액세스를해야합니다, FileName, InputStream 속성과 SaveAs 방법 등 : 또는

int contentLength = MyFileUpload.PostedFile.ContentLength; 
string contentType = MyFileUpload.PostedFile.ContentType; 
string fileName = MyFileUpload.PostedFile.FileName; 

MyFileUpload.PostedFile.Save(@"c:\test.tmp"); 

, 당신은 Request.Files 어를 사용할 수 있습니다 도구 상자에서는 FileUpload 컨트롤을 사용 싶지 않는 경우

int index = 1; 
foreach (HttpPostedFile postedFile in Request.Files) 
{ 
    int contentLength = postedFile.ContentLength; 
    string contentType = postedFile.ContentType; 
    string fileName = postedFile.FileName; 

    postedFile.Save(@"c:\test" + index + ".tmp"); 

    index++; 
} 
+0

왜 runat = "server"입니까? 나는 서버 컨트롤을 원하지 않는다. 이 기능은 서버 제어없이 작동합니까? – Ajay

+3

서버 컨트롤을 사용하고 싶지 않다면,'Request.Files'를 사용할 수 있습니다.이 콜렉션은 업로드 된 각 파일에 대해'HttpPostedFile' 객체를 포함하는 콜렉션을 제공합니다. – LukeH

+0

고맙습니다. @ 루크 ... 너는 나를 곤경에 빠뜨린다. :) –

0

는, 귀하의 의견에 ID가 다음 입력 필드에 액세스 할 양식 [ID]를 사용하고 그것을 던져 보내기 무형 문화 유산은 모든 업로드 된 파일의 컬렉션을 제공합니다 HtmlInputFile. 여기

예 : 사용자가 입력 태그에게 ID를 부여하고 RUNAT = "서버"를 추가하면 속성 http://www.codeproject.com/KB/aspnet/fileupload.aspx

0

다음 쉽게 액세스 할 수 있습니다.
먼저 귀하의 의견 태그를 변경합니다 <input type="file" id="FileUpload" runat="server" />
그런 다음를 Page_Load 메서드에 다음을 추가

if (FileUpload.PostedFile != null) 
{ 
    FileUpload.PostedFile.SaveAs(@"some path here"); 
} 

이 선택한 폴더에 파일을 작성합니다. 파일 유형이나 원본 파일 이름을 결정해야하는 경우 PostedFile 객체에 액세스 할 수 있습니다.

2

나는 이름 태그가 파일 입력에 요구되는 생각이없이

<input type="file" name="file" /> 

, 내가 다시 아무것도하지 않습니다.내 컴퓨터에 특정 될 수있는 한


또한 문제 :

나는

foreach (HttpPostedFile postedFile in Request.Files) 

나의 최종 코드의 모습 라인에서

Unable to cast object of type 'System.String' to type 'System.Web.HttpPostedFile'. 

오류 이렇게 :

for (var i = 0; i < Request.Files.Count; i++) 
{ 
    var postedFile = Request.Files[i]; 

    // do something with file here 
} 
관련 문제