HttpHandler [Image] не может быть отображен, потому что он содержит ошибки - PullRequest
1 голос
/ 23 ноября 2011

Хорошо, я работал без остановки над этим и много занимался поиском.Я не могу отобразить свои изображения при извлечении их из базы данных.Если я пытаюсь перейти по ссылке на обработчик вручную, я получаю сообщение «Изображение [Изображение] не может быть отображено, поскольку оно содержит ошибки».У меня было несколько старых изображений в базе данных, и они сначала отображались правильно.Но теперь, если я обновлю изображения, я получу эту ошибку при попытке их просмотра.

Код загрузки.

if (fileuploadImage.HasFile)
        {
            if (IsValidImage(fileuploadImage))
            {
                int length = fileuploadImage.PostedFile.ContentLength;
                byte[] imgbyte = new byte[length];
                HttpPostedFile img = fileuploadImage.PostedFile;
                img.InputStream.Read(imgbyte, 0, length);

                if (mainImage == null)
                {
                    ProfileImage image = new ProfileImage();
                    image.ImageName = txtImageName.Text;
                    image.ImageData = imgbyte;
                    image.ImageType = img.ContentType;
                    image.MainImage = true;
                    image.PersonID = personID;

                    if (image.CreateImage() <= 0)
                    {
                        SetError("There was an error uploading this image.");
                    }
                }
                else
                {
                    mainImage.ImageName = txtImageName.Text;
                    mainImage.ImageType = img.ContentType;
                    mainImage.ImageData = imgbyte;
                    mainImage.MainImage = true;
                    mainImage.PersonID = personID;

                    if (!mainImage.UpdateImage())
                    {
                        SetError("There was an error uploading this image.");
                    }
                }
            }
            else
            {
                SetError("Not a valid image type.");
            }

Вот мой обработчик изображения:

public class ImageHandler : IHttpHandler
{
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

    public void ProcessRequest(HttpContext context)
    {
        int imageid = Parser.GetInt(context.Request.QueryString["ImID"]);
        ProfileImage image = new ProfileImage(Parser.GetInt(imageid));

        context.Response.ContentType = image.ImageType;
        context.Response.Clear();
        context.Response.BinaryWrite(image.ImageData);
        context.Response.End();
    }

И вот как я его называю "~ / ImageHandler.ashx? ImID= "+ Parser.GetString (image.ImageID)

Я использую тип данных Image на сервере sql для хранения этого.

Редактировать:

Я также узналчто если я помещаю попытку catch вокруг context.Response.end (), он выдает ошибку, говоря «Невозможно оценить код, потому что собственный фрейм ...»

1 Ответ

1 голос
/ 23 ноября 2011

Я нашел свою проблему.Я проверял заголовок самого файла, чтобы убедиться, что он действителен.Каким-то образом это изменило данные и сделало их плохими.

...