2013-10-20 15 views
5

Ho un pannello di amministrazione sul mio sito Web, che consente a un utente di caricare immagini sul file system. che sto semplicemente facendo in codice C#:Carica immagini da ASP.NET al file system Godaddy

imageFile.SaveAs(galleryPath + fileName); 

Ma ottenere un'eccezione permesso:

Accesso al percorso 'D: \ Hosting ... \ html \ Immagini \ Gallery \ page2- img1.jpg ' negato.

Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione di la richiesta Web corrente. Si prega di rivedere lo stack trace per ulteriori informazioni sull'errore e dove è stato originato nel codice. Dettagli eccezione: System.UnauthorizedAccessException: accesso al percorso 'D: \ Hosting ... \ html \ Immagini \ Gallery \ page2-img1.jpg' negato.

Potete per favore darmi un consiglio come posso concedere un permesso?

+0

Se in esecuzione su IIS, date un'occhiata http://stackoverflow.com/questions/4877741/access-to-the-path-is-denied –

+1

hanno permesso di scrittura autorizzazioni sul server Cpanel? Sto ospitando il mio in Arvixe e ho avuto lo stesso problema. È necessario abilitare le autorizzazioni di scrittura se si sta utilizzando il codice per caricare senza FTP. –

risposta

0

Ok questa è la mia opinione

@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> 
} 

Questa è la mia vista del modello

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; } 
    } 

Questo è il mio controller azione.

[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. 

Questo è il codice MVC. Se si utilizzano Web Form, il codice dovrebbe essere più breve. L'ho preso da un link ma non riesco a trovarlo ora, quindi ho appena postato il mio codice personale. È inoltre necessario assicurarsi che le autorizzazioni di scrittura siano abilitate nell'host utilizzando il Cpanel.

2

Leggi questo articolo sulla risoluzione dei problemi, c'è una soluzione lì. Se questo non funziona basta contattare il supporto;)

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

Btw, la sua pratica meglio utilizzare Path.Combine quando concatenazione cartella + il nome del file

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

Grazie. Questo è esattamente quello che stavo chiedendo. – user1274184

Problemi correlati