2013-03-17 124 views
0

我的站点上有一个用于文件上传的文件夹http://mySite/Uploads/ 为每个用户创建一个新文件夹并将文件保存到其中。它适用于网站访问者/但我也有一个管理网站。员工应该能够在同一个目录下使用它上传文件。
Directory.CreateDirectory返回一个错误,它不能处理uri地址。 我正在通过"http://mySite/Uploads/UserId"。我错了吗?我应该使用另一种机制吗?从另一个文件夹中的一个站点创建文件夹

回答

0

如果有人感兴趣。我们在两个站点的IIS中都创建了虚拟文件夹“上传”。在iis上右键点击你的网站=>添加虚拟文件夹或以某种方式,我的iis不是英文版。为两个网站都做。并且它是全路径点在相同的文件夹,所以我可以使用Server.MapPath("~Uploads");并在管理网站我得到http://adminSite/Uploads/,在主站点是http://mySite/Uploads/。如果我通过一个地址上传文件,我可以通过另一个地址访问他们。

0

我错了吗?

是的,你应该通过一个物理文件夹Directory.CreateDirectory方法,而不是一个URL。例如:

Directory.CreateDirectory(Server.MapPath("~/uploads/UserId")); 

Server.MapPath方法应该返回一个像这样的文件夹:c:\inetpub\wwwroot\mysite\uploads\userid

+0

显然,我被误解了。 Server.MapPath(“〜/ uploads/UserId”)会给我myadminsite \ uploads \ UserId,我希望它是mymainsite \ uploads \ UserId – 2013-03-17 18:06:16

+0

然后你不能使用'Server.MapPath'方法。此方法仅适用于同一应用程序。如果您需要访问应用程序之外的文件夹,则必须指定完整路径:'c:\ inetpub \ wwwroot \ mymainsite \ uploads \ userid.' – 2013-03-17 18:08:30

0

您必须使用相对于系统根目录的路径。你可以用MapPath方法做到这一点。

var uploadsRoot = Server.MapPath("~Uploads"); 
var userUploadFolder = Path.Combine(UploadsRoot, userId.ToString()); 
Directory.CreateDirecty(userUploadFolder); 
+0

这正是我从主站点的页面上传的内容。但我也需要在另一个站点的相同文件夹中执行/ Server.MapPath如何实现?它映射到管理网站,这不是我所需要的 – 2013-03-17 18:00:47

相关问题