asp.net 创建文件夹时出错:未找到路径“D:\”的一部分。(asp.net 使用 FSO)

这些天在整一个博客程序,其中的相册功能自然就用到IO.Directory和IO.DirectoryInfo对象,这两个对象会遍历网站所在的硬盘的磁盘根目录,不巧的是,博客传到购买的虚拟主机空间后,相册功能不能正常使用,现象是:向一个存在的文件夹上传文件可以成功,但是不能使用程序创建文件夹

经查询得知,是因为一般虚拟服务商没有给磁盘根目录开启service用户读取权限,所以在操作文件夹的时候,使用IO下的这两个类会出现如下错误:

未找到路径“D:\”的一部分。

D盘就是服务器上磁盘路径,可能会因为服务器的不同而不同,后来向空间商询问,说是.Net只给读取权限,不给写入权限的(迷惑~),但服务器支持FSO的。于是只好改程序了,我们知道在asp中可以使用fso创建文件夹和操作文件,于是想到用asp.net调用window中得fso组件。经测试可行:

1.先引用:

项目->引用->浏览->COM组件->Microsoft  Scripting  Runtime

2.代码中写:

Scripting.FileSystemObject  fso=new  Scripting.FileSystemObjectClass();  

fso.CreateFolder(Path)

编译后,在bin目录下多了一个Interop.Scripting.dll文件,把这个文件连同全站发布重新上传,OK了。

0
0
(请您对文章做出评价)
« 上一篇:软件测试工程师面试题
» 下一篇:《软件工程思想》摘记(一)
posted on 2006-12-06 09:51 三千 阅读(2000) 评论(7)  编辑 收藏 所属分类: [E]. C#, [D]. ASP.NET

评论:
#1楼 2007-02-16 12:07 | S.Sams      
不错的主意!
  回复  引用  查看    
#2楼 2007-03-02 14:45 | dragosteaozone      
调试中。。。
  回复  引用  查看    
#3楼 2007-05-10 13:28 | Ares[未注册用户]
还是不会用!
protected void Submit_Click(object sender, EventArgs e)
{
string path = "pictrue";
if (FileUpload1.HasFile)
{
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
FileUpload1.SaveAs(Server.MapPath(path + "//" + FileUpload1.FileName));
我这么写对不?可是执行的时候告诉我
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\WebSites\test\pictrue\My love.jpg'.
这个事怎么回事啊?

  回复  引用    
#4楼[楼主] 2007-05-11 23:49 | YAO.NET℡      
Could not find a part of the path 'C:\WebSites\test\pictrue\My love.jpg'.
-----------
注意你的path,试试:
Directory.CreateDirectory(Server.MapPath(path));


  回复  引用  查看    
#5楼 2007-06-06 13:33 | wulin89[未注册用户]
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass();

fso.CreateFolder(Path)


这两行代码写到什么位置呀

  回复  引用    
#6楼 2007-06-06 13:41 | wulin89[未注册用户]
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass();

fso.CreateFolder(Path)

这段代码写到什么呀
急急急急急急急急急急急急急急急急急急急急急急急急急急急

  回复  引用    
#7楼[楼主] 2007-06-07 08:51 | YAO.NET℡      
@wulin89
把我给问晕了。-|-!

你要使用FSO创建文件夹,就这么写。比如写在一个按钮的点击事件中,点击按钮时创建文件夹。


  回复  引用  查看