2009-11-21 4 views
1

Je développe une page Web dans laquelle l'utilisateur peut télécharger son CV pour éditer. J'ai donc un lien pour télécharger l'article. J'utilise le code suivant pour le téléchargement.Comment télécharger et télécharger un fichier à partir d'un serveur en utilisant C#

DataTable dt = user.getUserDetails(2); 
user.WriteFileFromDBbyUserArticleID(Server.MapPath(Convert.ToString(dt.Rows[0].ItemArray[0])), Convert.ToInt32(2), "CV"); 
FileUtil.writeFileToResponse(Server.MapPath(Convert.ToString(dt.Rows[0].ItemArray[0])), Response); 

//////////////////////////////////////////////// 
public void WriteFileFromDBbyUserArticleID(string FilePath, int UserID, string FileType) 
{ 
    DataAccessLayer dal = new DataAccessLayer(); 

    string selectQuery = "Select Articles.Users_WriteFileFromDB(?,?,?) from Articles.Users"; 

    DbParameter[] parm = new DbParameter[3]; 
    parm[0] = dal.GetParameter(); 
    parm[0].ParameterName = "@FilePath"; 
    parm[0].Value = FilePath; 

    parm[1] = dal.GetParameter(); 
    parm[1].ParameterName = "@UserID"; 
    parm[1].Value = UserID; 

    parm[2] = dal.GetParameter(); 
    parm[2].ParameterName = "@FileType"; 
    parm[2].Value = FileType; 

    DataTable dtArticleStatus = dal.ExecuteDataTable(selectQuery, parm); 
} 

/////////////////////////////////////////////////////////////////////////// 
static public void writeFileToResponse(string filePath,HttpResponse Response) 
{ 
    try 
    { 
     string FileName = Path.GetFileName(filePath); 
     Response.Clear(); 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName); 
     Response.WriteFile(filePath); 
     Response.Flush(); 
     File.Delete(filePath); 
     Response.End(); 
    } 
     catch (System.Exception ex) 
    { 
    } 
} 

J'ai reçu l'erreur dans la ligne "Response.WriteFile (filePath);" comme suit

sys.webforms.pagerequestManagerparserErrorException: Le message reçu du serveur n'a pas pu être analysé. Les causes courantes de cette erreur sont les suivantes: lorsque la réponse est modifiée par des appels à response.write(), les filtres de réponse, httpModules ou la trace du serveur sont activés. Détails: Erreur d'analyse près de ...

Comment résoudre ce problème?

+1

Alors, quel est exactement le problème? – slugster

+0

Il devrait y avoir un score de réputation qui vous permet de voter pour les utilisateurs de près, je voterais Sakthivel. –

+0

Pour fermer? Que puis-je faire pour éviter? – Sakthivel

Répondre

1
public class FileHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Request["file"] != null) 
     { 
      try 
      { 
       string file = context.Server.MapPath("~/files/" + context.Request["file"].ToString()); 
       FileInfo fi = new FileInfo(file); 
       if (fi.Exists) 
       { 
        context.Response.ClearContent(); 
        context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fi.Name); 
        context.Response.AddHeader("Content-Length", fi.Length.ToString()); 
        string fExtn = "video/avi"; 
        context.Response.ContentType = fExtn; 
        context.Response.TransmitFile(fi.FullName); 
        context.Response.End(); 
       } 
      } 
      catch (Exception ex) 
      { 
       Trace.WriteLine(ex.Message); 
      } 
     } 
    } 

    public bool IsReusable 
    { 
     get { return true; } 
    } 
} 
0

Utilisez-vous ASP.NET? Essayez HtmlInputFile pour les téléchargements.

http://www.codeproject.com/KB/aspnet/fileupload.aspx

+0

Semble être poser des questions sur l'édition, pas d'entrée. –

+0

Hmm, j'y allais surtout par le titre puisque la question était un peu déroutante, mais en la relisant, il semblerait que vous ayez raison. De toute façon, laisser cette réponse ici aidera les utilisateurs qui trouvent cette question dans le titre. –

0

Pour télécharger le fichier, vous pouvez utiliser asp:FileUpload contrôle et utilisation simple SaveAs méthode. Mais sachez que si vous l'utilisez en combinaison avec un objet de mise à jour partielle (asp:UpdatePanel), vous devrez également définir des déclencheurs. Si vous n'utilisez pas les déclencheurs asp:FileUpload le contrôle peut être réinitialisé ...

Questions connexes