2015-04-08 46 views
0

我有兩個文件上傳控件,允許用戶同時上傳2張圖片。一旦用戶選擇了圖片,我使用2種方法調整大小並裁剪髮布的圖像,然後將其保存到文件系統。當我想將調整大小和裁剪後的圖像保存到文件系統時,會出現問題。我已經使用了下面的代碼:FileUpload改變inputstream內容

 protected void Upload(object sender, EventArgs e) 
      { 
       if (FileUpload1.PostedFile!=null && FileUpload1.PostedFile.ContentLength>0) 
       { 
        string fileName = Path.GetFileName(DateTime.Now.Ticks + FileUpload1.PostedFile.FileName); 
        string fileName2 = Path.GetFileName(DateTime.Now.Ticks + FileUpload2.PostedFile.FileName); 
        CropImage(FileUpload1); 
        CropImage(FileUpload2); 
        FileUpload1.PostedFile.SaveAs(Server.MapPath("images/") + fileName); 
        FileUpload2.PostedFile.SaveAs(Server.MapPath("images/") + fileName2); 
        Response.Redirect(Request.Url.AbsoluteUri); 
       } 
      } 

      private void CropImage(FileUpload fileup) 
      { 
       System.Drawing.Image image2 = System.Drawing.Image.FromStream(fileup.PostedFile.InputStream); 
       int x = image2.Width; 
       int y = image2.Height; 
       System.Drawing.Image resizedImage = UIHelper.ResizeImage(image2, new System.Drawing.Size(1140,x/y*1140)); 
       System.Drawing.Image croppedImage = UIHelper.CropImage(resizedImage, new System.Drawing.Rectangle(0, 0, 1140, 650)); 

       MemoryStream ms = new MemoryStream(); 
       croppedImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
// getting bytes from the cropped image; 
       byte[] slika = ms.ToArray(); 

fileup.PostedFile.InputStream.Write(slika, 0, slika.Length); 
// changing the original input stream with the cropped one    
      } 

現在我想用裁剪的一個替換原始文件上傳輸入流的字節。有人可以告訴我,如果我這樣做是錯誤的方式,或者我只是沒有看到這裏有什麼錯?

是我得到的錯誤是這樣的:

「指定的方法不支持」, 在這行代碼:

fileup.PostedFile.InputStream.Write(slika, 0, slika.Length); 

任何解決方案?謝謝!!

+0

什麼問題你有沒有? – Legends

+0

它說「指定的方法不支持」,在這行代碼中:fileup.PostedFile.InputStream.Write(slika,0,slika.Length); – perkes456

+0

你嘗試過嗎? – Legends

回答

1

如果你想保存調整圖像到磁盤,你必須使用另一種方法:

File.WriteAllBytes("yourPath..slika.jpg", slika); 

,並使用

「使用」

安全地處理它

 using (var ms = new MemoryStream()) 
     { 

     }