GDI+、PNG 图像到 UNC 中发生一般错误
Posted
技术标签:
【中文标题】GDI+、PNG 图像到 UNC 中发生一般错误【英文标题】:A generic error occurred in GDI+, PNG Image to UNC 【发布时间】:2011-06-04 06:16:36 【问题描述】:通常我不会在论坛上写东西,只是阅读我需要的信息。 这次我遇到了大问题,我需要专家的帮助。
我想将图片从 PictureBox 保存到文件中。
当我使用它时它工作
Image.Save("X:\\Files\\logo.png");
但我需要将图像保存到 UNC 位置。 因此从 X:\Files
创建了 UNC当我尝试将图像另存为时
Image.Save("\\\\\PC\\Files\\logo.png");
我得到愚蠢的 GDI+ 错误,没有任何信息..
我尝试使用 MemoryStream 保存它,但没有任何解决.. 我尝试了 4 小时,但没有成功..
如果我将 netvork 驱动器 \\PC\files 映射到驱动器号,可以说 L:\ 然后将图像另存为
Image.Save("L:\\logo.png"); // it works !
好的,男孩,你怎么了?又来了。。
Image.Save("X:\\Files\\logo.png"); // WORKS
Image.Save("\\\\PC\\Files\\logo.png"); // GDI+ ERROR
Image.Save("L:\\logo.png"); // DOES THE JOB (it is network drive from \\pc\files)
好的,现在你会问我在共享文件夹上创建了哪些权限。 我添加了用户 Everyone 并设置了写入、读取和执行权限。
问题是实际上我想将图像保存到 NAS 驱动器,所以我不确定它有什么 Sabma 安全权限(每个人,客人,不知道),或者换句话说,它不像单击共享那么简单文件夹和权限玩..
如何解决这个有问题的实现?我尝试了 Image.Clone()、MemoryStrean 和我在 Uncle Google 中找到的所有东西,但没有任何作用如果我在没有特殊用户登录的情况下创建网络驱动器,为什么它会起作用.. 我只是不能告诉客户创建网络驱动器它必须与 UNC 路径一起使用!
【问题讨论】:
\\\\\PC\\Files\\logo.png
开头有一个``太多了。
您使用的是GDI+
,还是.NET 中的Image
类?
【参考方案1】:
我想说你只是记错了你的反斜杠 - 应该有 4 个,而不是 5 个。试试:
Image.Save("\\\\PC\\Files\\logo.png");
【讨论】:
【参考方案2】:感谢 Mark 的评论。我没有 5 个反斜杠,但我做了更愚蠢的事情...
TextBox1.Text = "\\\\\\\\PC\\Files"; // through GUI I add "\\\\PC\Files"
然后
string path = TextBox1.Text;
Image.Save(path + "\\" filename");
您可以看到路径中的字符串是“\\\\PC\Files”!错误的! :=) 它必须是 \\ 所以解决方案是
TextBox1.Text="\\\\PC\\Files"; // or if I add this string by GUI "\\PC\Files"
还有一些我愚蠢的输入到文本框之后的东西。
if (path.StartsWith("\\\\\\\\") || path.Contains(":"))
// Problem was that in TextBox were really 4 backslashes so it jumps here
image.Save(path,ImageFormat.Png);
// and because string started as "\\\\" it throws GDI+ error
else
string path2= Directory.GetCurrentDirectory()+"\\"+path;
image.Save(path2, System.Drawing.Imaging.ImageFormat.Png);
是的,我是个白痴:=)
我确实修复了,它应该是这样 :=) 很抱歉,我正在向 *** 发送垃圾邮件。
【讨论】:
【参考方案3】:我认为不是代码问题,是因为安装了组件,我也遇到了同样的问题,在普通服务器上传后自行解决。
【讨论】:
以上是关于GDI+、PNG 图像到 UNC 中发生一般错误的主要内容,如果未能解决你的问题,请参考以下文章
使用带有内存流的 c# 在控制台应用程序中保存图像时,GDI + 中发生一般错误