Страница обработчика FTP, вызов строки из справки aspx с методом для инициализации страницы обработчика - PullRequest
0 голосов
/ 05 декабря 2010

Привет, ребята, попытался очистить мой последний пост, так что все готово.

У меня есть страница обработчика в моем проекте asp.net, которая "пытается" обработать запрос на загрузку ftp.

GetImage.ashx.cs

public class GetImage : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        {

            // method for calling PhotoPath from Database.aspx.cs
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri());
            // (new Uri) I would like to just store "photopath" in here as it has the ftp plus the filename in it
            request.Method = WebRequestMethods.Ftp.DownloadFile;

            request.Credentials = new NetworkCredential("username", "password");

            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.ClearHeaders();
                context.Response.ClearContent();
                context.Response.ContentType = "image/jpeg";
// Response.Headers.Add("Content-Type", "image/jpeg"); this is from the database.aspx page not sure if its correct 
                    context.Response.BinaryWrite(mStream.GetBuffer());
                }
                catch (WebException wex)
                {

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

            }

        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

}

На моей странице, содержащей мое представление сетки, у меня есть метод для извлечения данных из одной из моих ячеек, эта ячейка содержит путь ftpи имя файла изображения, которое я пытаюсь показать в моем элементе управления изображением:

Database.aspx.cs

protected void Page_Load(object sender, EventArgs e){

        Response.Headers.Add("Content-Type", "image/jpeg");

    }

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string PhotoPath = "";
        // Get the currently selected row. Because the SelectedIndexChanging event
        // occurs before the select operation in the GridView control, the
        // SelectedRow property cannot be used. Instead, use the Rows collection
        // and the NewSelectedIndex property of the e argument passed to this 
        // event handler.
        GridViewRow row = GridView1.Rows[GridView1.SelectedIndex];

        PhotoPath = row.Cells[5].Text;
        // how do I send photopath to my handler page?
        //TextBox1.Text = PhotoPath;
    }
}

}

На моей странице обработчика я хочу вызватьСтрока «PhotoPath» и поместите ее в мой ftwwebrequest на странице моего обработчика:

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(PhotoPath));

Я установил свой ImageUrl управления изображением на ~ / GetImage.ashx и мне потребуется некоторая помощь с кодом для вызова обработчика из моей базы данныхстраница?

Может ли кто-нибудь помочь, потому что я застрял на этом целую вечность?

1 Ответ

1 голос
/ 05 декабря 2010
  • Вам необходимо передать PhotoPath в обработчик ASHX, используя строку запроса.Затем вы должны прочитать параметр из строки запроса и передать его в WebRequest.Create
  • Вы не должны глотать исключения
  • Вам не нужно очищать ответ
  • Вам следуетскопируйте FtpWebResponse непосредственно в HttpResponse;вам не нужен промежуточный MemoryStream
  • Свойство ContentType сообщает браузеру, какой тип файла вы отправляете.См http://en.wikipedia.org/wiki/MIME_type
...