BitMap从本地上传到服务器,谁能搞定,我叫他大爷

woyaodubo 2018-03-26 10:18:38
WebSiteThumbnail.GetWebSiteThumbnail是截图的,本地浏览器截图,保存在本地电脑,是完全没问题的。
从本地截图,上传到服务器就卡死,没有一次是成功的。
这个问题搞了有一个星期多了,头都晕,
有大牛帮忙吗?

不要说什么UploadFile,因为我不需要选择,只要点击截图,同时上传到服务器。


            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[] buff = ms.ToArray();
string imgname = "Report/" + id + ".Bmp";
System.Drawing.Image.FromStream(ms).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp);
ms.Dispose();
...全文
1293 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jason_Mao1 2018-03-31
  • 打赏
  • 举报
回复
分两步验证一下,你先随便上传一张非 截图的试试,再看看图片质量大小。弄一个相对大质量的文件试试。如果非截图的能正常上传,那么就是你截图那块可能处理有点问题。是不是截图完 文件没有关闭被占用呢 ,再检查检查。
Veary 2018-03-30
  • 打赏
  • 举报
回复
引用 8 楼 woyaodubo 的回复:
[quote=引用 6 楼 u011785544 的回复:] 图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image
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[] buff = ms.ToArray(); ms.Dispose(); string pic = Convert.ToBase64String(buff); byte[] imageBytes = Convert.FromBase64String(pic); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); string imgname = "Report/" + id + ".Bmp"; System.Drawing.Image.FromStream(memoryStream).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp); 按照你说的方法,图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image, 结果是,保存到本地电脑,没问题; 上传服务器,卡死。 [/quote] 卡死 那么大,啊?
Veary 2018-03-30
  • 打赏
  • 举报
回复
引用 16 楼 woyaodubo 的回复:
[quote=引用 14 楼 u011785544 的回复:]
[quote=引用 8 楼 woyaodubo 的回复:]
[quote=引用 6 楼 u011785544 的回复:]
图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image


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[] buff = ms.ToArray();
ms.Dispose();
string pic = Convert.ToBase64String(buff);

byte[] imageBytes = Convert.FromBase64String(pic);
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length);
memoryStream.Write(imageBytes, 0, imageBytes.Length);
string imgname = "Report/" + id + ".Bmp";
System.Drawing.Image.FromStream(memoryStream).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp);

按照你说的方法,图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image,
结果是,保存到本地电脑,没问题; 上传服务器,卡死。

[/quote]

卡死 那么大,啊?[/quote]


不是大,是服务器上找不到那个路径的图片,图片路径是本地的啊。[/quote]



游北亮 2018-03-30
  • 打赏
  • 举报
回复
卡死是什么原因?文件流太大? 有个东西叫 分片上传,每次只上传1M的字节, 服务器按顺序接收完毕后, 本地进行合并,明白? 我们几个g的文件都能上传
Veary 2018-03-30
  • 打赏
  • 举报
回复
引用 16 楼 woyaodubo 的回复:
[quote=引用 14 楼 u011785544 的回复:] [quote=引用 8 楼 woyaodubo 的回复:] [quote=引用 6 楼 u011785544 的回复:] 图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image
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[] buff = ms.ToArray(); ms.Dispose(); string pic = Convert.ToBase64String(buff); byte[] imageBytes = Convert.FromBase64String(pic); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); string imgname = "Report/" + id + ".Bmp"; System.Drawing.Image.FromStream(memoryStream).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp); 按照你说的方法,图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image, 结果是,保存到本地电脑,没问题; 上传服务器,卡死。 [/quote] 卡死 那么大,啊?[/quote] 不是大,是服务器上找不到那个路径的图片,图片路径是本地的啊。[/quote] base64你都有了 你说找不到路径?? 你逗我?
peng2739956 2018-03-30
  • 打赏
  • 举报
回复
本地运行正常,放到服务器卡死,还是说这个截图截到本地保存正常,上传服务器卡死,如果是后者,那么就是写的上传代码有问题,第一要保证图片能显示,第二路径完整能访问,你这代码并没有做这些判断
woyaodubo 2018-03-30
  • 打赏
  • 举报
回复
引用 14 楼 u011785544 的回复:
[quote=引用 8 楼 woyaodubo 的回复:] [quote=引用 6 楼 u011785544 的回复:] 图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image
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[] buff = ms.ToArray(); ms.Dispose(); string pic = Convert.ToBase64String(buff); byte[] imageBytes = Convert.FromBase64String(pic); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); string imgname = "Report/" + id + ".Bmp"; System.Drawing.Image.FromStream(memoryStream).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp); 按照你说的方法,图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image, 结果是,保存到本地电脑,没问题; 上传服务器,卡死。 [/quote] 卡死 那么大,啊?[/quote] 不是大,是服务器上找不到那个路径的图片,图片路径是本地的啊。
woyaodubo 2018-03-30
  • 打赏
  • 举报
回复
引用 13 楼 weixin_38925245 的回复:
io流不行吗。。
要例子有吗?
极客诗人 2018-03-29
  • 打赏
  • 举报
回复
io流不行吗。。
csdnFUCKINGSUCKS 2018-03-29
  • 打赏
  • 举报
回复
System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname)
确保这个路径是在你项目里存在的即可保存成功 如果没有可以手动创建 也可以在代码里先判断路径是否存在 不存在的话先创建后保存

string imgname = id + ".Bmp";
string path = Server.MapPath("~/admin/Report/");
if (!Directory.Exists(path))
    Directory.CreateDirectory(path);
System.Drawing.Image.FromStream(ms).Save(path + imgname, System.Drawing.Imaging.ImageFormat.Bmp);
狼二羊 2018-03-28
  • 打赏
  • 举报
回复
丰云 2018-03-27
  • 打赏
  • 举报
回复
你叫定了。。。。。 这么基础的东西,会做的人太多了。。。
  • 打赏
  • 举报
回复
就不能好好问问题吗? 我来跟你分析一下哈,你这些代码是写在 .aspx.cs 里面的对吧,那你就要打断点测试看看,你的这个WebSiteThumbnail.GetWebSiteThumbnail在iis中能否调用了。
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 7 楼 foren_whb 的回复:
[quote=引用 5 楼 woyaodubo 的回复:] [quote=引用 3 楼 foren_whb 的回复:] 你叫定了。。。。。 这么基础的东西,会做的人太多了。。。
会的人少,这个东西网上都找到什么资料。搞的我头都晕。 第一个会的,我叫你大爷; 第二个会的,我叫你二大爷;[/quote] 给你指条明路,这里牵扯到后台模拟http提交文件流的做法 网上很多帖子,我就不多说了[/quote] 不要提示啊,弄个代码出来。
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 6 楼 u011785544 的回复:
图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image
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[] buff = ms.ToArray(); ms.Dispose(); string pic = Convert.ToBase64String(buff); byte[] imageBytes = Convert.FromBase64String(pic); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length); memoryStream.Write(imageBytes, 0, imageBytes.Length); string imgname = "Report/" + id + ".Bmp"; System.Drawing.Image.FromStream(memoryStream).Save(System.Web.HttpContext.Current.Server.MapPath("~/admin/" + imgname), System.Drawing.Imaging.ImageFormat.Bmp); 按照你说的方法,图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image, 结果是,保存到本地电脑,没问题; 上传服务器,卡死。
丰云 2018-03-27
  • 打赏
  • 举报
回复
引用 5 楼 woyaodubo 的回复:
[quote=引用 3 楼 foren_whb 的回复:] 你叫定了。。。。。 这么基础的东西,会做的人太多了。。。
会的人少,这个东西网上都找到什么资料。搞的我头都晕。 第一个会的,我叫你大爷; 第二个会的,我叫你二大爷;[/quote] 给你指条明路,这里牵扯到后台模拟http提交文件流的做法 网上很多帖子,我就不多说了
Veary 2018-03-27
  • 打赏
  • 举报
回复
图片转byte[] 转base64 调用服务器方法 传入base64 服务解析为byte[] IO写为Image
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 3 楼 foren_whb 的回复:
你叫定了。。。。。 这么基础的东西,会做的人太多了。。。
会的人少,这个东西网上都找到什么资料。搞的我头都晕。 第一个会的,我叫你大爷; 第二个会的,我叫你二大爷;
woyaodubo 2018-03-27
  • 打赏
  • 举报
回复
引用 2 楼 xomix 的回复:
就不能好好问问题吗? 我来跟你分析一下哈,你这些代码是写在 .aspx.cs 里面的对吧,那你就要打断点测试看看,你的这个WebSiteThumbnail.GetWebSiteThumbnail在iis中能否调用了。
WebSiteThumbnail.GetWebSiteThumbnail只是截图,本地浏览器截图,保存在本地电脑上,是完全没问题的。 就是说WebSiteThumbnail.GetWebSiteThumbnail 截图是没问题的,只是上传到服务器有问题。
woyaodubo 2018-03-26
  • 打赏
  • 举报
回复
请大爷进来, 除了叫你大爷,还给你20块钱买包烟,说到做到。

62,046

社区成员

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

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

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

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