日期:2014-05-17  浏览次数:20533 次

我想请教一下,Image类里的FromFile方法中,所传递的路径到底应该是什么路径?
情况是这样的,我想把自己网站中的某个图片文件转成二进制数据流,所以打算新建一个Image对象,使用FromFile方法获得文件,再用Save方法变为二进制,但是无论在FromFile后面写入什么路径,运行的时候都会报错,比如:
1,我直接写自己的硬盘路径,比如“C:\\Users\\Administrator\\Pictures\\1.jpg",会报错找不到文件
2,我写网站路径,比如"http://wwww.xxxxx.com/xxx/1.jpg"会提示URI格式错误
3,如果用Request.URL.Path或者Sever.Mappath这些同样也不行。

实在是不知道该怎么办了,特此来请教一下各位,谢谢。
------最佳解决方案--------------------

//使用符号~/定位到根目录
Server.MapPath("~/dir1/dir2/1.jpg");

------其他解决方案--------------------
 Bitmap image1 = (Bitmap) Image.FromFile(@"C:\Documents and Settings\" +@"All Users\Documents\My Music\music.bmp", true);

用完Image这个记得及时释放。否则报文件xxx正由另一进程使用,因此该进程无法访问该文件
------其他解决方案--------------------
服务器上不能用盘符,用 Server.MapPaht去访问,肯定可以
------其他解决方案--------------------
先得到byte[]
然后转为bitmap就行
  Bitmap bmp = Bitmap.FromStream(new System.IO.MemoryStream(bt)) as Bitmap;
       
------其他解决方案--------------------
我知道应该如何转为byte[],但是现在的问题就是无法初始化这个Image对象

2楼说应该用Server.MapPath
那假如我的图片的绝对路径是http://www.abc.com/dir1/dir2/1.jpg的话,MapPath里应该怎么写呢?
------其他解决方案--------------------
Mappath("dir1/dir2/1.jpg");

------其他解决方案--------------------
引用:
Mappath("dir1/dir2/1.jpg");

刚刚试着用了一下,还是提示找不到路径
我看了一下,是因为引用的路径不对

现在是这个情况,我的页面地址是www.abc.com/dir3/1.aspx,而图片地址是www.abc.com/dir1/dir2/1.jpg
所以如果我使用Mappath("dir1/dir2/1.jpg") 的话,程序引用的路径就会变成dir3/dir1/dir2/.jpg了
------其他解决方案--------------------
 ResolveUrl("dir1/dir2/1.jpg");
------其他解决方案--------------------
引用:
ResolveUrl("dir1/dir2/1.jpg");

用Page.ResolveUrl取出的还是dir3/dir1/dir2/1.jpg
------其他解决方案--------------------
调试






调试

------其他解决方案--------------------
多好用的~啊楼主,哎~~~
------其他解决方案--------------------
引用:
C# code??12//使用符号~/定位到根目录Server.MapPath("~/dir1/dir2/1.jpg");


还是不行,识别不出“~”这个符号,都把人无奈死了
------其他解决方案--------------------
现在的情况就是我的页面是在application of brand文件夹底下,而图片是在pic后面那一串里,pic和application of brand 都是在根目录下的同级目录
就是不想让目录里出现那个application of brand 啊
------其他解决方案--------------------
Server.MapPath("~/dir1/dir2/1.jpg");
你确定没有打错?
------其他解决方案--------------------
如果你的网站根目录是Web,图片放在web/pic下面,那你就用Server.MapPath("~/pic/1.jpg")试试
------其他解决方案--------------------
嗯,解决了,非常感谢各位的帮助!