2014-07-18 2 views
0

기본적으로 관리자가 갤러리라는 웹 사이트를 가지고있어 이미지에 대한 정보가있는 이미지를 업로드 할 수 있으며 갤러리에 표시됩니다. 문제는 ~ 40 KB의 크기, 잘 작동하지만 ~ 230 KB의 크기로 다른 이미지를 업로드 할 때 크롬 하단 상태 표시 줄에 최대 업로드 파일의 %가 표시되지만 문제를 처리하는 데 소요되는 것처럼 보입니다. 100 % 퍼센트 만이 내 서버를 기다리는 유지하고 ... 끝나지 않아 및 업로드 된 이미지가 http://www.atrin-gallery.ir/Images/Upload/dalangV.jpg업로드 된 이미지가 엉망입니다.

파일 업로드를 처리하려면 코드처럼 그 후 다음과 같습니다 :

if (Request != null) 
     { 
      try 
      { 
       HttpPostedFileBase file = Request.Files["image"]; 

       if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName)) 
       { 
        string subPath = "~/Images/Upload"; // your code goes here 

        bool isExists = System.IO.Directory.Exists(Server.MapPath(subPath)); 

        if (!isExists) 
        { 
         System.IO.Directory.CreateDirectory(Server.MapPath(subPath)); 
        } 

        string fileName = Path.GetFileName(file.FileName); 
        fileName = fileName.Replace(" ", ""); 
        var path = Path.Combine(Server.MapPath(subPath), fileName); 
        string fileContentType = file.ContentType; 
        byte[] fileBytes = new byte[file.ContentLength]; 
        file.InputStream.Read(fileBytes, 0, file.ContentLength); 
        file.SaveAs(path); 
       } 
      } 
      catch (Exception e) 
      { 

      } 
     } 

P.S : 다른 많은 웹 사이트에서 동일한 기능을 사용하고 있으며 더 큰 파일이나 이미지, 아이디어가 있으면 제대로 작동합니다.

+0

왜 ContentLength가 이미 int 일 때 int로 변환합니까? –

+0

그래도 좋은 지적이지만 여전히 주요 문제에 도움이되지 않는다 ... 어쨌든 Convert.ToInt32를 제거하십시오. –

+0

emacs와 같은 원시 데이터 뷰어에서 이미지를 엽니 다. 나쁜 이미지를 좋은 이미지와 비교하십시오. 끝에 정크 문자가 잔뜩 있습니까? 중간에? 다시 업로드하는 경우 항상 같은 위치에 문제가 있습니까? –

답변

0

코드에서 다음 줄을 제거하고 file.SaveAs(path);을 사용하여 파일을 저장하십시오.

string fileContentType = file.ContentType; 
byte[] fileBytes = new byte[file.ContentLength]; 
file.InputStream.Read(fileBytes, 0, file.ContentLength); 

당신은 Stream을 읽을 필요가 없습니다 당신이 Read 방법을 사용하여 읽으려고하면 그것은 읽은 바이트의 숫자로 스트림 내의 위치를 ​​진출하게됩니다. (Stream.Read Method).

감사합니다.

관련 문제