2011-09-23 3 views
0

나는 원격 사이트에 the 2nd answer here.HttpHandler를 통해 게시 된 파일을 사용하는 방법은 무엇입니까?

에서 가져온 원격 사이트, 내가 가진에 로컬 파일과 게시물을 소요하는 방법을 구축 한 내 HttpHandler를하지만 파일 바이트 그래서 난 곳 저장할 수 있습니다 어디 모르고 원격 컴퓨터에서.

처리를 위해 누군가가 HttpHandler에서 해당 파일을 사용하는 방법에 대해 도움을 줄 수 있습니까? 나는 아래 시도했지만 Request.Files이 비어 : 문맥에서 HttpRequest

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Collections.Specialized; 

namespace Somewhere 
{ 
    public class UploadFileHandler : IHttpHandler 
    { 
     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "text/plain"; 

      //VALIDATE FILES IN REQUEST 
      if (context.Request.Files.Count > 0) 
      { 
       //HANDLE EACH FILE IN THE REQUEST 
       foreach (HttpPostedFile item in context.Request.Files) 
       { 
        item.SaveAs(context.Server.MapPath("~/Temp/" + item.FileName)); 
        context.Response.Write("File uploaded"); 
       } 
      } 
      else 
      { 
       //NO FILES IN REQUEST TO HANDLE 
       context.Response.Write("No file uploaded"); 
      } 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 
} 
+0

'Request.Files'는 비워 둘 수 없습니다. 파일 업로드만으로 작은 HTML 페이지를 만들고 핸들러에 파일을 보내면'Request.Files' * 여전히 비어 있습니까? – bzlm

+1

이 질문을 향후 방문자에게 유용하게 사용하려면 허용 된 답변으로 인해 문제가 해결 된 이유를 설명하십시오. :) – bzlm

답변

0

가져 오기 보류 및 HttpPostedFile 개체의 컬렉션을 얻을 수있는 Files 속성을 사용합니다. 그런 다음 HttpPostedFile.InputStream의 데이터에 액세스 할 수 있습니다 (이름, 길이 및 MIME 유형에 대한 다른 속성이 있음).

EDIT : 이미 Files 속성을 사용하고 있다는 것을 보여주기 위해 질문을 수정 했으므로 잘못된 HTTP 요청을보고 있거나 내가 어떻게 잘못 작성했는지 의심 스럽습니다. 의뢰. Wireshark을 사용하여 네트워크 수준에서 어떤 일이 발생하는지 확인하는 것이 좋습니다. 즉, 에 실제로에 파일 데이터가 있는지 확인할 수 있습니다.

+0

질문에 따르면 "Request.Files is empty"입니다. – bzlm

+0

@bzlm : 아, 미안 해요. 제가 대답하기 시작할 때 그 비트가 없었습니다. –

+0

Wireshark는 잔인한 소리를냅니다. 분명히 [역방향 프록시로 피 들러] (http://www.fiddler2.com/fiddler/help/reverseproxy.asp)는 눈이 더 쉬울 것입니다. :) – bzlm

관련 문제