2013-10-20 13 views
5

私は自分のWebサイトに管理パネルを持っています。これによりユーザーは画像をファイルシステムにアップロードできます。私は単純にC#コードでやってる :ASP.NETからgodaddyファイルシステムに画像をアップロード

imageFile.SaveAs(galleryPath + fileName); 

しかし、権限の例外を取得:パスに

アクセス「D:... \ HTML \イメージをホスティング\ \ギャラリー\ page2-をimg1.jpg ' は拒否されました。

説明現在のWeb要求の の実行中に、未処理の例外が発生しました。エラーについての詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。 例外の詳細:System.UnauthorizedAccessException: パス 'D:\ Hosting ... \ html \ Images \ Gallery \ page2-img1.jpg'へのアクセスが拒否されました。

あなたに許可を与える方法を教えてください。

+0

あなたはIIS上で、それを実行している場合は、ルックhttp://stackoverflow.com/questions/4877741/access-to-the-path-is-denied –

+1

を取るの書き込みを有効にしていませんサーバーCpanelのアクセス許可?私はArvixeで私のホストして、同じ問題があった。 FTPなしでアップロードするコードを使用している場合は、書き込み権限を有効にする必要があります。 –

答えて

0

[OK]を、これが私の見解である

@using (Html.BeginForm("Upload", "Pictures", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken() 
    <div> 
    Title:<br/> 
    @Html.EditorFor(x => x.Title)<br/> 
    @Html.ValidationMessageFor(x => x.Title)<br/> 
    @Html.TextBoxFor(x => x.File, new { 
    type = "file" 
    })<br/> 
    @Html.ValidationMessageFor(x => x.File)<br/> 
    Description:<br/> 
    @Html.TextAreaFor(x => x.Description)<br/> 
    @Html.ValidationMessageFor(x => x.Description) 
    </div> 
    <div style="clear:both"></div> 
    <p><input type="submit" value="Save"/></p> 
} 

これは、これは私のコントローラのアクションである私の見解モデル

public class UploadModel 
    { 
     [Required(ErrorMessage=("You have not selected a file"))] 
     public HttpPostedFileBase File { get; set; } 
     [Required(ErrorMessage = "Please enter a title")] 
     [StringLength(50)] 
     public string Title { get; set; } 
     [StringLength(400)] 
     public string Description { get; set; } 
    } 

です。

[Authorize(Roles = "Approved")] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Upload(UploadModel m) 
    { 
     byte[] uploadedFile = null; 
     Byte123 xxx = new Byte123(); 
     if (m.File != null && !string.IsNullOrEmpty(m.Title)) 
     { 
      //var fileName = System.IO.Path.GetFileName(m.File.FileName); 
      //string c = m.File.FileName.Substring(m.File.FileName.LastIndexOf(".")); 
      // m.Title = m.Title.Replace(c, ""); 
      uploadedFile = new byte[m.File.InputStream.Length]; //you get the image as byte here but you can also save it to file. 

これはMVCコードです。 Webフォームを使用している場合、コードは短くする必要があります。 リンクからこれを取得しましたが、今すぐ見つけられないので、自分のコードを投稿しました。また、Cpanelを使用してホストで書き込み権限が有効になっていることを確認する必要があります。

2

このトラブルシューティングの記事を読むと解決策があります。それが動作しない場合は、単にサポートに連絡し;)

http://support.godaddy.com/help/article/6481/setting-directory-permissions-with-windows-hosting-accounts

ところで

、フォルダ+ファイル名

imagefile.SaveAs(System.IO.Path.Combine(galleryPath, fileName)); 
+0

ありがとうございます。それはまさに私が求めていたものです。 – user1274184