Web 服务 - Silverlight 4 图像上载问题



我在jsp页面中使用Silverlight4和java webervices。我想将图像保存到服务器,因此尝试使用 java 网络服务执行此操作。我正在使用下面的代码行,但输出已损坏。我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无法打开这张图片,因为文件似乎已损坏,损坏或太大。

客户端 CODE

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;
    }

网络服务代码

@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;
    }
}

我在 forums.silverlight.net 上找到了答案当我尝试在 Stream 定义之后调用 ReadFull(Stream( 时,它非常有趣,但它可以工作,但是当我稍后调用 10 行代码时,它会返回所有 0。功能

        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(); 

(位图图像(;

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

链接: http://forums.silverlight.net/forums/p/234126/576070.aspx#576070

最新更新