如何将URI图像路径传递给FileInfo类?

时间:2015-05-26 03:39:48

标签: c# image

我有以下程序将图像转换为字节数组

public byte[] ReadImageFile(string imageLocation)
        {
            byte[] imageData = null;
            FileInfo fileInfo = new FileInfo(imageLocation);
            long imageFileLength = fileInfo.Length;
            FileStream fs = new FileStream(imageLocation, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            imageData = br.ReadBytes((int)imageFileLength);
            return imageData;
        }

如果我将值传递为"D:\\ENSource\\1.png",则它可以正常工作。

但如果我将值发送为“http://i.stack.imgur.com/PShuQ.png”,则会抛出异常

  

不支持URI格式

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

FileInfoFileStream使用本地文件,没有办法通过Uri"他们中的任何一个。

要处理Uri,你可以:

  • 将服务器映射到本地驱动器(即,如果服务器支持WebDAV)。
  • 使用与Http相关的类(如HttpClientWebClient)从服务器下载文件并获取字节。即Image to byte array from a url

答案 1 :(得分:1)

编辑! 请参阅@Alexei的回复。 他抛出了一个更好的(阅读:更简单)使用webclient的解决方案。 我将离开这里的回复,以防有人想要查看更详细的查询网络服务器的例子。

我只是给了阿列克谢一个嘀嗒声(他说得很对),但只是填补了这一点。 。

您与Web服务器通信,而不是文件系统。 因此,您需要手动“请求”来自服务器的数据,然后传递生成的流。

请参阅以下代码段。 。 。 http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Download-Image-from-URL.html