2012-01-08 67 views
1

我试图将图像文件上传到服务器,它给我一个错误如何访问共享主机空间上的文件夹?

"System.UnauthorizedAccessException: Access to the path 'D:\Hosting\234344\html\Testingfiles\upload\813.jpg' is denied.at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)" 

中的HttpHandler我:

HttpPostedFile file = context.Request.Files["Filedata"]; 

string usr_id = context.Request.Form["usr_id"];// gets the JSON data from the request 
string strPath = context.Server.MapPath(("/Testingfiles/upload/") + file.FileName); 
string ext = Path.GetExtension(strPath); 

if (ext.Equals(".jpg") || ext.Equals(".jpeg") || ext.Equals(".png")) 
{ 
    file.SaveAs(strPath); 
    context.Response.Write("Image uploaded successfully"); 
} 

我到底错在这里做什么?

回答

3

错误消息说明了这一切。您没有对该文件夹的写入权限。

您将需要让您的托管服务提供商为该ASP .NET身份文件夹分配写入权限。

此外,请考虑您是否可以使用低于~/App_Data的文件夹。这是按照惯例存储需要在ASP .NET中进行写入访问的文件的地方,因此许多托管服务提供商将默认允许写入该文件夹(但您需要检查自己是否确定您的特定主机)。

2

您应该尝试写入〜/ App_Data /以查看是否有效。如果它确实如此,那只是因为你没有给予/TestingFiles/Uploads/文件夹的asp.net写入权限。

如果您的控制面板上的Plesk,那么你可以自己通过转到文件管理器,然后单击权限按钮排序了这一点。如果您查看App_Data文件的权限以供参考,则需要添加的实际用户名取决于使用plesk的域名。

其他主机控制面板可能允许您以不同方式进行操作。

如果你找不到它,那么你应该询问你的主机你如何设置文件权限或查看他们的知识库。

2

如果您的控制面板上有Plesk,那么您可以通过转到FileManager并单击权限按钮来自行排除此问题。

我修复了这个错误,允许IIS用户完全访问上传文件夹。无需使用App_Data文件夹

+0

我给了应用程序池组的权限,即IWPG(用户名)。它在parellel plesk 12.0.8中运行。你的回答给了我一个很好的理由。谢谢 – 2015-05-28 17:49:05

0

有关的Plesk 12.0只:

无需使用App Data文件夹。你只需要完全控制你的应用程序池组IWPG(用户名)。它一定会奏效。我搜索了很多小时,这个解决方案为我工作。

希望它也适用于其他人。

相关问题