2012-10-21 24 views
2

我試圖做一個web服務,可以接受圖像的字節[],並將其保存到網絡服務器。 該代碼由兩部分組成,即發送數據的客戶端和獲取數據的Web服務。 嘗試上傳圖像時出現以下錯誤: System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:在GDI +中發生了一般性錯誤。C#保存圖像(字節[])通過Web服務

myImage是一個System.Drawing圖像。

private byte[] imageToByteArray(Image imageIn) 
    { 
     MemoryStream ms = new MemoryStream(); 
     imageIn.Save(ms,ImageFormat.Png); 
     return ms.ToArray(); 
    } 

using (Something.ClientServiceClient client = new Something.ClientServiceClient()) 
      { 
       client.Open(); 
       client.uploadScreenShot(imageToByteArray(myImage)); 
      } 

的web服務看起來如下:

public void uploadHofScreen(byte[] imgArray) 
    { 
     Image nImg = byteArrayToImage(imgArray); 
     Bitmap bitmap = new Bitmap(nImg); 
     saveJpeg("/1/test.jpg", bitmap, 85L); 
    } 


private void saveJpeg(string path, Bitmap img, long quality) 
    { 
     EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); 
     ImageCodecInfo jpegCodec = getEncoderInfo("image/jpeg"); 
     if (jpegCodec == null) 
      return; 
     EncoderParameters encoderParams = new EncoderParameters(1); 
     encoderParams.Param[0] = qualityParam; 
     img.Save("XXXX" + path, jpegCodec, encoderParams); 
    } 

    private ImageCodecInfo getEncoderInfo(string mimeType) 
    { 
     ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 
     for (int i = 0; i < codecs.Length; i++) 
      if (codecs[i].MimeType == mimeType) 
       return codecs[i]; 
     return null; 
    } 

無論是webconfig和AppConfig中有以下readerQuotas:

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 

任何意見,什麼問題?

+1

該問題不在WCF中。調試圖像處理以獲得更詳細的錯誤。 –

+0

你確定這不是[重複這個](http://stackoverflow.com/questions/1781390/saving-an-image-a-generic-error-occurred-in-gdi?rq=1)? – Jeroen

+0

你的'byteArrayToImage'是怎麼樣的? – tofi9

回答

1

(只是撥弄一點上上傳文件夾的權限,發現IIS沒有寫權限 - 對不起,我應該檢查了纔去這裏)

在光明的一面,現在你可以看到如何通過web服務上傳圖片。 :)

+0

如果我們將公開web服務,那麼發送數據塊比增加readerquota更好。由於安全問題,默認情況下爲低。 – Silvermind