高高手进来啊!Bitmap转成byte[]了,怎样才能把byte[]上传到服务器,以图片形式保存?

woyaodubo 2018-03-04 12:06:06
protected void cut_Click(object sender, EventArgs e)
{

string url = Request.Url.ToString();
Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail(url, 980, 1520, 980, 1520);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] bytes = ms.GetBuffer();

//下面该怎么写,才能把byte[]上传到服务器,以图片形式保存?
}
...全文
1754 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
stevenjin 2018-03-28
  • 打赏
  • 举报
回复
用HttpRequest这个类
desperaso 2018-03-28
  • 打赏
  • 举报
回复
引用 10 楼 woyaodubo 的回复:
[quote=引用 9 楼 tigerlgf 的回复:] 最好的方式是转成Base64编码
这个太高深了,有完整能用的代码就好了[/quote] byte 转为Base64,b/s里可以直接用了 <img src="data:image/png;base64,.........(base64串)........"> byte[]转base64 string ret = ""; byte[] BinBytes = null; BinBytes = ReadImageFile(f); ret = Convert.ToBase64String(BinBytes); 字符串传递到服务端应该没什么问题吧,就几行高深么
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
哦,刚又看了一下你的代码,你已经取出其二进制字节内容了。那么你使用任何一种你学过的服务器端编程方式(比如说WCF功能调用)把这个内容跟其它业务信息一起作为一个命令请求、调用服务器端的服务功能就好了。服务器端可以使用
Image.FromStream(.....)
方法从这个二进制数组来产生图片,或者直接把数据保存到文件。
            m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] buff = ms.ToArray();
            System.Drawing.Image.FromStream(buff).Save(......)//这样写是不对的哦
            m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] buff = ms.ToArray();
            System.Drawing.Image.FromStream(ms).Save(......) //这样写没有语法错误,保存到本地可以,但是保存到服务器不行;
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
哦,刚又看了一下你的代码,你已经取出其二进制字节内容了。那么你使用任何一种你学过的服务器端编程方式(比如说WCF功能调用)把这个内容跟其它业务信息一起作为一个命令请求、调用服务器端的服务功能就好了。服务器端可以使用
Image.FromStream(.....)
方法从这个二进制数组来产生图片,或者直接把数据保存到文件。
            m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] buff = ms.ToArray();
            System.Drawing.Image.FromStream.Save(......)(buff)
//这样写是不对的哦
            m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] buff = ms.ToArray();
            System.Drawing.Image.FromStream(ms).Save(......)
//这样写没有语法错误,保存到本地可以,但是保存到服务器不行;
woyaodubo 2018-03-13
  • 打赏
  • 举报
回复
引用 11 楼 From_TaiWan 的回复:
asp.net,难道你写的这些代码不是在服务器端执行的吗? 你需要将要处理的图片用upload控件传到服务器,然后进行截图、缩放等等操作
没有upload控件的,是截图,
yzf86211861 2018-03-08
  • 打赏
  • 举报
回复
这个先收藏了 用的上
秋的红果实 2018-03-08
  • 打赏
  • 举报
回复
asp.net,难道你写的这些代码不是在服务器端执行的吗? 你需要将要处理的图片用upload控件传到服务器,然后进行截图、缩放等等操作
woyaodubo 2018-03-07
  • 打赏
  • 举报
回复
引用 9 楼 tigerlgf 的回复:
最好的方式是转成Base64编码
这个太高深了,有完整能用的代码就好了
grady.lu 2018-03-05
  • 打赏
  • 举报
回复
最好的方式是转成Base64编码
woyaodubo 2018-03-04
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
哦,刚又看了一下你的代码,你已经取出其二进制字节内容了。那么你使用任何一种你学过的服务器端编程方式(比如说WCF功能调用)把这个内容跟其它业务信息一起作为一个命令请求、调用服务器端的服务功能就好了。服务器端可以使用
Image.FromStream(.....)
方法从这个二进制数组来产生图片,或者直接把数据保存到文件。
老大,是asp.net,不是WCF啊,那应该怎么做
  • 打赏
  • 举报
回复
哦,刚又看了一下你的代码,你已经取出其二进制字节内容了。那么你使用任何一种你学过的服务器端编程方式(比如说WCF功能调用)把这个内容跟其它业务信息一起作为一个命令请求、调用服务器端的服务功能就好了。服务器端可以使用
Image.FromStream(.....)
方法从这个二进制数组来产生图片,或者直接把数据保存到文件。
  • 打赏
  • 举报
回复
我只告诉你一个编程问题,对于图片对象,不能使用二进制序列化,否则会在对端无法重放图片。你应该把图片二进制内容 Save 到一个 byte[ ] 中,然后只序列化这个数组。
圣殿骑士18 2018-03-04
  • 打赏
  • 举报
回复

public string WebMethodPostData(string urlPrefix, byte[] imageByte, string contentType)
        {
			var stream = new MemoryStream(imageByte);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPrefix);
            request.Timeout = requestTimeOut;
            try
            {
                request.Method = "POST";
                request.Accept = "*/*";
                request.KeepAlive = true;
                request.ContentType = contentType;
                request.Credentials = System.Net.CredentialCache.DefaultCredentials;
                request.ContentLength = stream.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    //将内存流数据读取位置归零
                    stream.Position = 0;
                    byte[] tempBuffer = new byte[stream.Length];
                    stream.Read(tempBuffer, 0, tempBuffer.Length);
                    stream.Close();

                    //将内存流中的buffer写入到请求写入流
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();

                    //获取到上传请求的响应
                    WebResponse response = request.GetResponse();

                    //获取到上传返回的数据
                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    string content = reader.ReadToEnd();
                    response.Close();
                    request = null;

                    return content;
                }
            }
            finally
            {
                if (request != null)
                {
                    //中止请求
                    request.Abort();
                }

                //需要写下Null
                request = null;

                //强制垃圾回收,并释放资源
                System.GC.Collect();
            }
        }
圣殿骑士18 2018-03-04
  • 打赏
  • 举报
回复
引用 5 楼 woyaodubo 的回复:
[quote=引用 1 楼 daixf_csdn 的回复:]

public string WebMethodPostData(string urlPrefix, byte[] imageByte, string contentType)
        {
			var stream = new MemoryStream(imageByte);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPrefix);
            request.Timeout = requestTimeOut;
            try
            {
                request.Method = "POST";
                request.Accept = "*/*";
                request.KeepAlive = true;
                request.ContentType = contentType;
                request.Credentials = System.Net.CredentialCache.DefaultCredentials;
                request.ContentLength = stream.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    //将内存流数据读取位置归零
                    stream.Position = 0;
                    byte[] tempBuffer = new byte[stream.Length];
                    stream.Read(tempBuffer, 0, tempBuffer.Length);
                    stream.Close();

                    //将内存流中的buffer写入到请求写入流
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();

                    //获取到上传请求的响应
                    WebResponse response = request.GetResponse();

                    //获取到上传返回的数据
                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    string content = reader.ReadToEnd();
                    response.Close();
                    request = null;

                    return content;
                }
            }
            finally
            {
                if (request != null)
                {
                    //中止请求
                    request.Abort();
                }

                //需要写下Null
                request = null;

                //强制垃圾回收,并释放资源
                System.GC.Collect();
            }
        }
图片在服务器上的保存路径呢? [/quote] 服务端代码,参考: http://blog.csdn.net/chenguang79/article/details/9044439
圣殿骑士18 2018-03-04
  • 打赏
  • 举报
回复
引用 6 楼 woyaodubo 的回复:
[quote=引用 1 楼 daixf_csdn 的回复:]

public string WebMethodPostData(string urlPrefix, byte[] imageByte, string contentType)
        {
			var stream = new MemoryStream(imageByte);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPrefix);
            request.Timeout = requestTimeOut;
            try
            {
                request.Method = "POST";
                request.Accept = "*/*";
                request.KeepAlive = true;
                request.ContentType = contentType;
                request.Credentials = System.Net.CredentialCache.DefaultCredentials;
                request.ContentLength = stream.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    //将内存流数据读取位置归零
                    stream.Position = 0;
                    byte[] tempBuffer = new byte[stream.Length];
                    stream.Read(tempBuffer, 0, tempBuffer.Length);
                    stream.Close();

                    //将内存流中的buffer写入到请求写入流
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();

                    //获取到上传请求的响应
                    WebResponse response = request.GetResponse();

                    //获取到上传返回的数据
                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    string content = reader.ReadToEnd();
                    response.Close();
                    request = null;

                    return content;
                }
            }
            finally
            {
                if (request != null)
                {
                    //中止请求
                    request.Abort();
                }

                //需要写下Null
                request = null;

                //强制垃圾回收,并释放资源
                System.GC.Collect();
            }
        }
string urlPrefix, string conte 这两个参数是什么?[/quote] 你看一下两个参数怎么被调用的,不就可以猜到了吗。
woyaodubo 2018-03-04
  • 打赏
  • 举报
回复
引用 1 楼 daixf_csdn 的回复:

public string WebMethodPostData(string urlPrefix, byte[] imageByte, string contentType)
        {
			var stream = new MemoryStream(imageByte);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPrefix);
            request.Timeout = requestTimeOut;
            try
            {
                request.Method = "POST";
                request.Accept = "*/*";
                request.KeepAlive = true;
                request.ContentType = contentType;
                request.Credentials = System.Net.CredentialCache.DefaultCredentials;
                request.ContentLength = stream.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    //将内存流数据读取位置归零
                    stream.Position = 0;
                    byte[] tempBuffer = new byte[stream.Length];
                    stream.Read(tempBuffer, 0, tempBuffer.Length);
                    stream.Close();

                    //将内存流中的buffer写入到请求写入流
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();

                    //获取到上传请求的响应
                    WebResponse response = request.GetResponse();

                    //获取到上传返回的数据
                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    string content = reader.ReadToEnd();
                    response.Close();
                    request = null;

                    return content;
                }
            }
            finally
            {
                if (request != null)
                {
                    //中止请求
                    request.Abort();
                }

                //需要写下Null
                request = null;

                //强制垃圾回收,并释放资源
                System.GC.Collect();
            }
        }
string urlPrefix, string conte 这两个参数是什么?
woyaodubo 2018-03-04
  • 打赏
  • 举报
回复
引用 1 楼 daixf_csdn 的回复:

public string WebMethodPostData(string urlPrefix, byte[] imageByte, string contentType)
        {
			var stream = new MemoryStream(imageByte);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlPrefix);
            request.Timeout = requestTimeOut;
            try
            {
                request.Method = "POST";
                request.Accept = "*/*";
                request.KeepAlive = true;
                request.ContentType = contentType;
                request.Credentials = System.Net.CredentialCache.DefaultCredentials;
                request.ContentLength = stream.Length;

                using (Stream requestStream = request.GetRequestStream())
                {
                    //将内存流数据读取位置归零
                    stream.Position = 0;
                    byte[] tempBuffer = new byte[stream.Length];
                    stream.Read(tempBuffer, 0, tempBuffer.Length);
                    stream.Close();

                    //将内存流中的buffer写入到请求写入流
                    requestStream.Write(tempBuffer, 0, tempBuffer.Length);
                    requestStream.Close();

                    //获取到上传请求的响应
                    WebResponse response = request.GetResponse();

                    //获取到上传返回的数据
                    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                    string content = reader.ReadToEnd();
                    response.Close();
                    request = null;

                    return content;
                }
            }
            finally
            {
                if (request != null)
                {
                    //中止请求
                    request.Abort();
                }

                //需要写下Null
                request = null;

                //强制垃圾回收,并释放资源
                System.GC.Collect();
            }
        }
图片在服务器上的保存路径呢?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧