2012-01-08 106 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(用戶名)。它一定會奏效。我搜索了很多小時,這個解決方案爲我工作。

希望它也適用於其他人。

相關問題