2 yuyanzhizi yuyanzhizi 于 2013.12.17 14:43 提问

用web api下载服务器图片时传输的byte[]数组变化了。我的目的是接收到正确的byte[]

用web api下载服务器图片时传输的byte[]数组变化了。(上面从sql出来的byte[]是正确的,下面的接收到的byte[]就有问题了)传输用的是json,下面的是发送的代码和接受的代码,求各位大神解答,自己觉得是发送的方式有问题。数据流是SQl中的image类型

[HttpGet]
public byte[] GoodsPhoto(Int32 goodsid)
{
try
{
//DataTable goodsTable = new DataTable();
//byte[] a = new byte[10];
using (SqlConnection cn = new SqlConnection(DBHelper.Instance.ConnectionString))
{
String sql = "select photo from Bill_GoodsPhoto where goodsid=6";

                SqlCommand cmd = new SqlCommand(sql, cn);
                cmd.Parameters.AddWithValue("goodsid", goodsid);
                cn.Open();

                SqlDataReader dr = cmd.ExecuteReader();

                if (dr.Read())
                {
                    FileStream fs = new FileStream(@"f:\1.jpg", FileMode.Create, FileAccess.Write);

                  byte[] bytes = (byte[])dr["Photo"];
                    //MemoryStream ms = new MemoryStream(a, 0, a.Length);
                    //Image returnImage = Image.FromStream(ms);
                    //returnImage.Save(@"f:\1.jpg");
                    return bytes;
                }


                //goodsTable.Load(dr);

                //return new Result<DataTable>(goodsTable);
                return null;

            }
        }
        catch (Exception ex)
        {
            return null;
        }
    }

[HttpGet]
public byte[] GoodsPhoto11(Int32 goodsid)
{

        try
        {
            String URL = "http://192.168.1.106:6971/API/Epoch/GoodsPhoto?goodsid=6";

            WebClient wc = new WebClient();
            byte[] ab = wc.DownloadData(URL);

            MemoryStream ms = new MemoryStream(ab, 0, ab.Length);
            Image returnImage = Image.FromStream(ms);

            returnImage.Save(@"f:\1.jpg");
            return ab;

        }
        catch (Exception ex)
        {
            return null;
        }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用byte[]进行文件上传
1.背景   需要以byte[]数据流的方式传输文件到服务器,并在服务器还原文件。2.代码(1)转换为byte[]        # region function1            FileStream fs = File.OpenRead(@&quot;D:\\workspace\test.txt&quot;);            MemoryStream tempStream = new System...
iOS 向服务器提交Byte数组格式图片
UIImage *image = [UIImage imageNamed:@"image.png"]; NSData *data = UIImagePNGRepresentation(image); NSString *byteArray = [data base64Encoding];
javaweb图片上传用字节数组
现在企业很少用传统的方法去上传图片,显示图片,一般都会转成字节数据数组或是base64来处理, 以下介绍如何将页面的file在后台转成字节数组来处理, controller类代码 import org.apache.commons.fileupload.FileItem; import org.apache.commons.io.IOUtils; import org.s
网络传输Byte数组
网络传输Byte数组 案例背景 需要将byte数组,以Json的方式传输,Json默认会将Byte数组转化成String作为key的value。我们也可以自己将Byte数组转化为String在放入Json键值对里。在接手端再从Json中解析出Byte数组。 但是项目中的问题是:传过来的Byte数组还原不了。接收端解析得到的Byte数组的长度和发送端的原始Byte数组的长度都不一样。
C#.NET WebApi返回各种类型(图片转二进制流或byte /json数据/字符串)
using System.IO; ///  /// WebApi返回图片 ///  public HttpResponseMessage GetQrCode() {     var imgPath = @"D:\ITdosCom\Images\itdos.jpg";     //从图片中读取byte     var imgByte = File.ReadAllBytes(imgPath);
网络传输时,Java中byte[]转String问题
最近的项目中要使用到把byte[]类型转换成String字符串然后通过网络发送,但发现发现出去的字符串和获取的字符串虽然是一样的,但当用String的getBytes()的方法得到的byte[]跟原来的byte[]是不一样的。 看如下代码: bytebytes[] = new byte[] { 50, 0, -1, 28, -24 }; String string = new Strin
在WebService上传递字节流
<br />要通过WebService上传图片,到网上搜出一大堆,最有用的就是郑钧的博客。<br /> <br />想了一下,原理很简单。<br /> <br />webservice,要实现在Java和.net之间通信,最基本的元素就是类型;SOAP定义了四种基本类型,int/long/boolean/String;<br /> <br />其它类型都是不支持的。要使用其它类型,就要做类型映射,就是将SOAP不认识的类型,映射为SOAP认识的类型;比如,java中的Vector,就不能直接用。因为.net
API之Byte类型
package com.wonders.week01; /** * 以JDK1.7为基础 * (1)java.lang.Byte继承了java.lang.Number * (2)是final修饰的类 * (3)构造方法:public Byte(byte value) * (4)构造方法:public Byte(String s) throws NumberFormatException 里
Android 上传图片到服务器时将bitmap转换为byte[]最后转换为String
//上传图片到服务器         Bitmap bitmap = ………………;//得到图片         ByteArrayOutputStream out=new ByteArrayOutputStream();         try { out.flush(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);//转
安卓开发 蓝牙或者tcp用byte数组传输数据时的处理
用蓝牙或者WiFi(TCP)连接各种传感器开发时经常需要处理操作各种数据,byte的数值空间为-128到+127;     所以如果传感器、开发板那边定义的是无符号int型之类数据,Java端收到的数据用bytes传输的话,要将byte转换为正确的int等数值类型,就得判断byte值的正负,value=X>0?X:256+X,或者用下面这个方法;     public static int b