2011-07-13 15 views
0

私はjspページでjava webervicesでSilverlight4を使用しています。私はサーバーに画像を保存して、java webserviceでこれをやろうとします。以下の行のコードを使用していますが、出力が壊れています。私は、ファイルが破損して、損傷したり、大きすぎるため、tがこの絵を開くt understand why. Please help me. This is really important for me. When i try to open 3mb jpeg file contains "Windows Photo Viewer canドン。」Silverlight 4イメージアップロードの問題

クライアント側のコード

WriteableBitmap wb = new WriteableBitmap(bitmapImage); 
      byte[] bb = ToByteArray(wb); 

public byte[] ToByteArray(WriteableBitmap bmp) 
    { 
     int[] p = bmp.Pixels; 
     int len = p.Length * 4; 
     byte[] result = new byte[len]; // ARGB 
     Buffer.BlockCopy(p, 0, result, 0, len); 
     return result; 
    } 

WebServiceのコード

@WebMethod(operationName = "saveImage") 
public Boolean saveImage(@WebParam(name = "img") 
byte[] img, @WebParam(name = "path") 
String path) { 
    try{ 
     FileOutputStream fos = new FileOutputStream("C:\\Users\\TheIntersect\\Desktop\\sharp_serializer_dll\\saved.jpg"); 
     fos.write(img); 
     fos.close(); 
     return true; 
    } 
    catch(Exception e){ 
     return false; 
    } 
} 

答えて

0

私は、フォーラムに私の答えを見つけました.silverlight.net ストリームの定義の直後にReadFully(Stream)を呼び出そうとすると非常に面白いですが、後で10行のコードを呼び出すと0が返されます。 FUnction

 public static byte[] ReadFully(Stream input) 
    { 
     byte[] buffer = new byte[input.Length]; 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      int read; 
      while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
      { 
       ms.Write(buffer, 0, read); 
      } 
      return ms.ToArray(); 
     } 
    } 

失敗コード

using (Stream str = opd.File.OpenRead()) 
     { 
      BitmapImage bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(str); 
      image.Tag = bitmapImage.UriSource.ToString(); 
      image.Source = bitmapImage; 
      image.Width = width; 
      image.Height = height; 
      image.Stretch = Stretch.Uniform; 
      container.Child = image; 
      rtb.Selection.Insert(container); 
      ServiceReference1.webWordWebServiceClient s = new ServiceReference1.webWordWebServiceClient(); 
      byte[] bb = ReadFully(str); 
      s.saveImageCompleted += new EventHandler<ServiceReference1.saveImageCompletedEventArgs>(s_saveImageCompleted); 
      s.saveImageAsync(bb, "gungorrrr"); 

     } 

成功しコード

using (Stream str = opd.File.OpenRead()) 
     { 
      byte[] bb = ReadFully(str); 
      BitmapImage bitmapImage = new BitmapImage(); 
      bitmapImage.SetSource(str); 
      image.Tag = bitmapImage.UriSource.ToString(); 
      image.Source = bitmapImage; 
      image.Width = width; 
      image.Height = height; 
      image.Stretch = Stretch.Uniform; 
      container.Child = image; 
      rtb.Selection.Insert(container); 
      ServiceReference1.webWordWebServiceClient s = new ServiceReference1.webWordWebServiceClient(); 

(のBitmapImage)。

  s.saveImageCompleted += new EventHandler<ServiceReference1.saveImageCompletedEventArgs>(s_saveImageCompleted); 
      s.saveImageAsync(bb, "gungorrrr"); 

     } 

リンク:http://forums.silverlight.net/forums/p/234126/576070.aspx#576070

関連する問題