2010-12-06 20 views
0

Hey essayant de lire le flux dans le contrôle de l'image peut aider quelqu'un aussi j'ai quelques erreurs dans ma page de gestionnaire.lire le flux dans l'erreur de contrôle de l'image dans le chemin de l'uri

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string PhotoPath; 

    GridViewRow row = GridView1.Rows[GridView1.SelectedIndex]; 

    PhotoPath = row.Cells[5].Text; 
    PhotoPath = HttpUtility.UrlEncode(PhotoPath); 

    HttpWebRequest request = (HttpWebRequest) 
     WebRequest.Create(PhotoPath); 
    HttpWebResponse response = (HttpWebResponse) 
      request.GetResponse(); 
    Stream resStream = response.GetResponseStream(); 
    // want to output to image control upon selection of gridview 
    //using (System.Drawing.Image img = System.Drawing.Image.FromStream(resStream)) 
    //{ 
    // img.Save("temp.jpg", ImageFormat.Jpeg); 
    //} 

} 

}

Je reçois la valeur d'erreur ne peut pas être nulle. Nom du paramètre: uriString

public class GetImage : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     { 
     string PhotoPath = System.Web.HttpContext.Current.Request.QueryString["PhotoPath"]; 
     PhotoPath = HttpUtility.UrlDecode(PhotoPath); 


    FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(PhotoPath)); 
// error is here ------------------- 
     request.Method = WebRequestMethods.Ftp.DownloadFile;  
     request.Credentials = new NetworkCredential("Administrator", "commando"); 

     try 
     { 
      FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

      Stream stream = response.GetResponseStream(); 
      byte[] bytes = new byte[2048]; 

      int i = 0; 
      MemoryStream mStream = new MemoryStream(); 

      do 
      { 

       i = stream.Read(bytes, 0, bytes.Length); 

       mStream.Write(bytes, 0, i); 
      } while (i != 0); 

      context.Response.Clear(); 
      context.Response.ClearHeaders(); 
      context.Response.ClearContent(); 
      context.Response.ContentType = "image/jpeg"; 
      context.Response.BinaryWrite(mStream.GetBuffer()); 

     } 
     catch (WebException wex) 
     { 

      //throw new Exception("Unable to locate or access your file.\\nPlease try a different file."); 

     } 
     catch (Exception ex) 
     { 
      throw new Exception("An error occurred: " + ex); 

     } 

    } 
} 

public bool IsReusable 
{ 
    get 
    { 
     return false; 
    } 
} 

}

+1

Il semble que votre variable PhotoPath est null ou n'est pas une chaîne d'uri valide. pouvez-vous montrer sa valeur s'il vous plaît? – Lorenzo

+1

Vous ne devriez pas appeler 'UrlDecode', et vous devriez utiliser le paramètre' context'. – SLaks

+0

sa valeur est définie dans ma base de données mais quand je charge mon site j'obtiens l'erreur lors du chargement pas sur la sélection. Je comprendrais s'il l'a fait lors de la sélection. Le photopath est stocké dans mon gridview ressemble à ceci ftp: //192.168.1.17/Image.jpg –

Répondre

1

Comme je l'ai expliqué plus haut, vous devez définir l'URL dans la balise <img> pour inclure le PhotoPath dans le querystring.

+1

Vous devez comprendre le fonctionnement d'une balise ''. – SLaks

+0

Veuillez montrer un exemple parce que cela n'a aucun sens. Photopath est le chemin + nom de l'image par exemple ftp://192.168.1.17/Image.jpg –

+1

@Garrith: Wrong. Cela a du sens. Par exemple: ''. Vous devez apprendre les bases de HTML et HTTP, et probablement ASP.Net. – SLaks