powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не-в-автономе не показывается фотография?
34 сообщений из 34, показаны все 2 страниц
Почему не-в-автономе не показывается фотография?
    #33956944
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программе у меня стоит:if (Image1.ImageUrl[0] == '~') {
Image1.ImageUrl= Server.MapPath(Image1.ImageUrl.Substring(2));
}

где Image1 - это asp:Image

При его описании я задалImageUrl="~/App_Data/RegisteredPhoto.jpg"

На сервере в папке App_Data фото с названиемRegisteredPhoto.jpg


лежит на месте. В автономе всё нормально показывается, а через сервер фотографии не видать.
В чем может быть дело?, - подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960434
gaidar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем хранить фотографии в папке App_Data? Это системная директория для файлов данных. Лучше создайте директорию Images и храните файлы там.
Пределение Url к файлу - метод ResolveUrl, а не MapPath (определение серерного пути). Используйте ResolveUrl!--
Гайдар Магдануров
E-Mail | Блог | Сайт

Difficult I do now, impossible will take a while...
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960444
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за вразумление.

Теперь насчет папки App_Data. Дело в том, что у меня фотографии ПОЛУЧАЮТСЯ в процессе деятельности, а именно - они извлекаются из моей БД. Извлекаю, чтобы показать на экране. А извлечь мне дозволено (как я понимаю) только в папку App_Data, - иначе получу прерывание защиты безопасности. Как тут быть?

Сейчас буду пробовать ResolveUrl.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960450
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программе стоит:

Image1.ImageUrl= ResolveUrl(Image1.ImageUrl);
Response.Write(Image1.ImageUrl);

В результате сверху экрана появляется:

/App_Data/RegisteredPhoto.jpg

и рамка - пустая (фото в ней нет).

Попробую положить фото в другую папку (Images).
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960455
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для чего вообще писать извлеченную фотку на диск? Все ж наоборот ищут как любыми способами избавиться от отдельных файлов на диске.
пиши ее из SQL прямо в поток браузера.
Способов миллион - самый ходовой рецепт тут
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960459
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из "ходового рецепта" мне удалось пока извлечь только следующую подсказку:

Response.ContentType= "image/jpeg";
System.IO.MemoryStream ms= newSystem.IO.MemoryStream();
bmMap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.WriteTo(Response.OutputStream);

Предположим, я действительно могу извлечь фото в "воздух" (или на диск в App_Data временно). Теперь мне нужно уметь содержимое подсунуть в Image1, которое имеет тип asp:Image
Потому что мне незачем просто рисовать это фото на экране где попало, а Image1 размещен в нужном мне месте.
Подскажите поконкретнее, если кто знает, как это сделать?
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960466
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В asp:Image в свойство ImageUrl установишь путь к своему HttpHandler (или aspx, в зависимости от того как ты реализовал), который "извлекает картинку в воздух". Что-то вроде такого:

Image1.ImageUrl = ResolveUrl("~/image.aspx?id=" + imageId); 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960468
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В asp:Image в свойство ImageUrl установишь путь к своему HttpHandler (или aspx, в зависимости от того как ты реализовал), который "извлекает картинку в воздух". Что-то вроде такого:

Image1.ImageUrl = ResolveUrl("~/image.aspx?id=" + imageId); 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960469
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
извлечь фото в "воздух"
Это не воздух, это поток браузера , 99,99% файлов любого типа (XLS,PDF,GIF...) в ASP-приложениях извлекаются только так.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960477
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Под "воздухом" я понимал "оперативку", оперативную память (скажем, string или массив byte[]). Мне действительно нетрудно из своей БД побайтно считать фотографию.

И теперь это надо загрузить в HttpHandler, как я понимаю. Но это я пока себе смутно представляю, так как не знаю этого HttpHandler ...

Дорогой manovcih, я Вашего
"~/image.aspx?id=" + imageId
пока совсем не понимаю.
Я что: должен завести страничку image.aspx ?
Это несложно. И что потом дальше делать?
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960480
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Статья Отображение картинки из БД напрямую – создание своего HttpHandler поможет разобраться с HttpHandler'ом.
Если назвать handler так же как и в этой статье (photo.aspx), то что бы загрузить картинку в браузер надо будет набрать адрес:

http://имясайта/photo.aspx?id=[тут_id_записи_с_нужной_картинкой_в_базе] 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960841
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый manovcih, я прочитал Вашу содержательную статью про HpptHandler, и думаю, что использование Handler'a - это очень перспективный путь.
Но пока не могу на него решиться, поскольку фото - это вроде бы не такая уж сложная штука.

Расскажу чего я пока достиг.
Для этого привожу кусок своей программы:
    System.IO.MemoryStream ms= new System.IO.MemoryStream();
    string    fnam;

    fnam= Server.MapPath(Image1.ImageUrl);
    ms= fyle.All(fnam); // Моя команда, означающая считывание
             // содержимого файла в память

    Response.ContentType= "image/jpeg";
    ms.WriteTo(Response.OutputStream);

- и вверху страницы появляется фотография!
Но вся остальная часть страницы зато при это исчезает...

Напоминаю всю сложность момента: если бы это была статическая фотка и сидела бы в Images, то никаких бы проблем тут не было.
Но фото возникло динамически, и лежит в App_Data. А показывать из этой папки фотографии студия почему-то отказывается (хотя при этом благополучно помещает их туда по FileUpload'у).
Зная местонахождение фотографии (a ImageUrl вверху как раз туда и указывает), я считываю содержимое файла-фоты в память. И потом пытаюсь эту "фоту в памяти" показать на экране.
Но выходит неуклюже. И только в этом сейчас вся проблема.

Итак, как можно КУЛЬТУРНО отобразить на странице имеющуюся в памяти фотографию? (чтобы она оказалась на своем месте).
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960872
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, вместо трех строк приведенного выше фрагмента программы можно было написать просто:

Response.TransmitFile(fnam);
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960942
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слуш, по-хорошему, хандлеры тебе не нужны. Это АЛЬТЕРНАТИВНЫЙ путь, тому, что я тебе сказал.
Вся твоя проблема в том, что ты не можешь понять эту фразу.
Ничего у тебя не получится сделать дальше, пока не поймешь нижеследующую фразу.
И код, на который я тебе давал ссылку.
Код: plaintext
1.
2.
Дорогой manovcih, я Вашего
"~/image.aspx?id=" + imageId
пока совсем не понимаю.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960975
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я проштудировал статью http://www.aspnetmania.com/Articles/Article/20.html
и даже попробовал реализовать.

1) Во-первых, студия меня обругала за код <httpHandlers>
<add verb="*" path="photo.aspx" type="PictureHandler.PictureHandler,PictureHandler" />
</httpHandlers>


который я вставил в web.config

2) И второе препятствие, которое я вижу, заключается в том, что я не использую (может быть, пока) SQL, а там во много всё держится на использовании SQL. Я этого монстра стараюсь избегать всеми силами...
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960992
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1) Во-первых, студия меня обругала за код
<httpHandlers>
<add verb="*" path="photo.aspx" type="PictureHandler.PictureHandler,PictureHandler" />
</httpHandlers>

который я вставил в web.config

свой класс по созданию хэндлера нужно компилировать (обязательно) - из командной строки студии доходишь до класса и пишешь vbc /target:library имяКласса.vb (для vb.net) потом включаешь эту .dll в проект и всё будет сладенько ;)
автор
2) И второе препятствие, которое я вижу, заключается в том, что я не использую (может быть, пока) SQL, а там во много всё держится на использовании SQL. Я этого монстра стараюсь избегать всеми силами...

так ведь где то ты же хранишь фотки (какая то БД) вот из неё и выбирай только не на диск а сразу в респонс.оутпутстринг ...
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33960998
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, тут так часто говорят о прелестях самописного HttpHandler - что я тоже решил попробовать - классная штука НО есть один вопрос:
как из него обратиться к сессионной переменной (где можно прочесть "ПРО ЭТО" ?) так запросто context.Session("bla-bla-bla") не выходит, а очень нужно... КАК БЫТЬ?
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963143
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На словацком сайте www.qsh.com доступ к фотоматериалам сделан так:

1) они в состав WebSite включают странный модуль Handler.ashx, который не имеет своего .cs-двойника

2) я привожу полностью его текст:
<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.IO;
using System.Web;

public class Handler : IHttpHandler {

    public bool IsReusable {
        get {
            return true;
        }
    }
    
    public void ProcessRequest (HttpContext context) {
        // Set up the response settings
        context.Response.ContentType = "image/jpeg";
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.BufferOutput = false;
// Setup the Size Parameter
        PhotoSize size;
        switch (context.Request.QueryString["Size"]) {
            case "S":
                size = PhotoSize.Small;
                break;
            case "M":
                size = PhotoSize.Medium;
                break;
            case "L":
                size = PhotoSize.Large;
                break;
            default:
                size = PhotoSize.Original;
                break;
        }
        // Setup the PhotoID Parameter
        Int32 id = -1;
        Stream stream = null;
        if (context.Request.QueryString["PhotoID"] != null && context.Request.QueryString["PhotoID"] != "") {
            id = Convert.ToInt32(context.Request.QueryString["PhotoID"]);
            stream = PhotoManager.GetPhoto(id, size);
        } else {
            id = Convert.ToInt32(context.Request.QueryString["AlbumID"]);
            stream = PhotoManager.GetFirstPhoto(id, size);
        }
        // Get the photo from the database, if nothing is returned, get the default "placeholder" photo
        if (stream == null) stream = PhotoManager.GetPhoto(size);
        // Write image stream to the response stream
        const int buffersize = 1024 * 16;
        byte[] buffer = new byte[buffersize];
        int count = stream.Read(buffer, 0, buffersize);
        while (count > 0) {
            context.Response.OutputStream.Write(buffer, 0, count);
            count = stream.Read(buffer, 0, buffersize);
        }
    }

}


Ничего web.config'e они не меняют.

3) в тексте Default.aspx у них есть кусок:                            <td><a href='Details.aspx?AlbumID=<%# Eval("AlbumID") %>&Page=<%# Container.DataItemIndex %>'>
                                <img src="Handler.ashx?PhotoID=<%# Eval("PhotoID") %>&Size=M" class="photo_198" style="border:4px solid white" alt='Photo Number <%# Eval("PhotoID") %>' /></a></td>
                            <td class="mid--x"></td>



4) и этого оказывается достаточно, чтобы на странице действительно появлялось фото.

Если кто-нибудь что-то из этого понял, объясните мне пожалуйста этот их "словацкий" фокус.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963291
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл handler.ashx на диске существует?
Трюк с web.config нужен для того что бы не создавать такой файл на диске. Можно ничего не добавлять web.config и просто создать файл на диске, который обработает запрос за картинкой, аналогично как любой другой запрос за страницей обрабатывается соответствующим aspx файлом. В "словацком" случае такой файл - handler.ashx.

P.S. для web-сервера запрос за страницей и запрос за картинкой принципиально разницы не имеют. Вся разница только в content-type. Просто, при на запросе за страницей браузеру отсылается HTML разметка, а при запросе за картинкой браузеру отсылаются байты картинки. 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963296
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
главное не волнуйся ;) от этого поднимается давление и пропадает желание...
создай страничку .aspx и туда в пагелоад пропиши код
Код: plaintext
1.
2.
3.
4.
5.
ResponseюClear();
Response.ContentType= "image/jpeg";
System.IO.MemoryStream ms= newSystem.IO.MemoryStream();
bmMap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
ms.WriteTo(Response.OutputStream);
или как ты там извлекаешь свою картинку... больше в этой странице ничего создавать и писать не надо!!!
на странице, в которой ты хочешь получить картинку пишешь один единственный тэг
Код: plaintext
1.
<img alt="" src="имя первой страницы хошь с параметром хошь без него" />
P.S. когда поймёшь что происходит, то и словаки для тебя станут понятны и HttpHandler и всё остальное... Искренне желаю удачи в понимании происходящего!!!
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963609
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С файлом handler.ashx (в составе WebSite) приятно хотя бы уже то, что транслятор не жалуется, когда в src ссылаешься на него...

Постараюсь проделать всё по рекомендации...
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963660
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ух-ты!
Уважаемый vladgriq, ПОЛУЧИЛОСЬ.
Огромный успех. Проверил и в автономе и, главное, на сервере.
Прелесть этого метода в том, что он показывает фото (картинки) из папки App_Data, что почему-то отказывается делать Image.
Подвожу итоги:
1) в WebSite надо создать текст photo.aspx с таким содержанием:
protected void Page_Load(object sender, EventArgs e) {
        System.IO.MemoryStream ms= new System.IO.MemoryStream();
        string fnam;

        fnam= Server.MapPath(Image1.ImageUrl);
        ms= fyle.All(fnam); // Моя команда, означающая считывание
                    // содержимого файла в память

        Response.Clear();
        Response.ContentType= "image/jpeg";
        ms.WriteTo(Response.OutputStream);

        //this.Response.TransmitFile(fnam);
    }


<body>
<form id="form1" runat="server">
<div>
<asp:Image ID="Image1" runat="server" Width="206px" ImageUrl="~/App_Data/RegisteredPhoto.jpg" /> 
</div>
</form>
</body>



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

2) в нужном месте программы вставляем:
    <img alt="newphoto" src="photo.aspx" />

3) И тогда при выполнении программы в этом месте покажется содержимое фотографии.

4) осталось только сделать параметр (скажем, через Session), который бы в photo.aspx настраивал местоположение фото.

Повторяю, тут вся борьба была за то, чтобы отображался материал динамического характера, т.е. из App_Data.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963728
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вношу некоторые корректировки в размышления ;)
страница photo.aspx вообще не в чём не нуждается - там даже лишнее уже есть
см. классический пример от MS
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
<%@ Page Language="VB" EnableSessionState="False" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Dim iStream As System.IO.Stream

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Put user code to initialize the page here
       
        If Request.QueryString("fn") <> "" Then
                
            ' Identify the file to download including its path.
            Dim filepath As String = "D:\data\" & HttpContext.Current.User.Identity.Name & "\" & Request.QueryString("fn")
            
            ' Buffer to read 10K bytes in chunk:
            Dim buffer(10000) As Byte

            ' Length of the file:
            Dim length As Integer

            ' Total bytes to read:
            Dim dataToRead As Long

            ' Identify the file name.
            Dim filename As String = System.IO.Path.GetFileName(filepath)

            Try
                ' Open the file.
                iStream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)

                ' Total bytes to read:
                dataToRead = iStream.Length

                'Response.ContentType = "application/octet-stream"
                'Response.AddHeader("Content-Disposition", "attachment; filename=" & filename)
                'Response.AppendHeader("Content-Length", dataToRead.ToString())


                'вместо закоментированных  3  строк выше вставляй следующее
                Response.ContentType= "image/jpeg";


                ' Read the bytes.
                While dataToRead > 0
                    ' Verify that the client is connected.
                    If Response.IsClientConnected Then
                        ' Read the data in buffer
                        length = iStream.Read(buffer, 0, 10000)

                        ' Write the data to the current output stream.
                        Response.OutputStream.Write(buffer,  0 , length)

                        ' Flush the data to the HTML output.
                        Response.Flush()

                        ReDim buffer(10000) ' Clear the buffer
                        dataToRead = dataToRead - length
                    Else
                        'prevent infinite loop if user disconnects
                        dataToRead = -1
                    End If
                End While

            Catch ex As Exception
                ' Trap the error, if any.
                'Response.Write("Error : " & ex.Message)
            Finally
                If IsNothing(iStream) = False Then
                    ' Close the file.
                    iStream.Close()
                End If
                Response.End()
            End Try
        Else
            Exit Sub
        End If
        
    End Sub
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Fail</title>
</head>
<body>
    <form id="form1" runat="server">
    
    </form>
</body>
</html>
вот так считывается в страницу любая инфа - файл-картинка, файл-архив and etc. единственное что меняется Response.ContentType для того что бы броузер клиента знал как обработать посланный респонс.
автор4) осталось только сделать параметр (скажем, через Session), который бы в photo.aspx настраивал местоположение фото.

туда, как правило передаются параметры для извлечения различных фото - потому как страница на все фотки одна (как правило - значения передаются в строке запроса) и какая фотка будет показана при помощи эой страницы зависит как раз от параметра который мы ей передадим... а местоположение фотки на странице задаётся в самой основной странице как ты и написал
Код: plaintext
1.
 <img alt="newphoto" src="photo.aspx" />
авторПовторяю, тут вся борьба была за то, чтобы отображался материал динамического характера, т.е. из App_Data.

могу огорчить (или сильно обрадовать ;) - при таком подходе инфа-файл будет считываться из любой папки на сервере (она может быть вообще на др. физическом диске и незамаплена на IIS) - единственное, надо дать права на чтение пользователю из под которого работает IIS - но думаю об этом в др. теме - сейчас это не главное ;)
P.S. думаю картина происходящего стала ещё яснее?!
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963750
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Если нетрудно, укажите откуда Вы взяли "классический пример от MS". Я имею в виду, что может быть там рядом я найду "перевод" на привычный мне С-Sharp и получше разберусь в ентом деле.

2) От имеющихся возможностей я НЕ огорчаюсь. Я огорчаюсь, когда их нет. (Тем более в случае надуманного нежелания MS показывать из App_Data!).
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963767
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно: я стал писать

<img id="imgPhotoRegistered" runat="server" src=

и в этот момент студия САМА мне предложила вставить туда Handler.ashx (который у меня остался в Web-проекте).
Это означает, что суффикс "ashx" какой-то особенный. Может быть он как раз и предназначен для показа изображений?
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963810
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Желание не показывать файлы из App_Data вовсе не надуманное. Эта папка предназначена для хранения базы данных сайта (будь то SQL Express база или XML файлы). Вы же не хотите что бы пользователь мог скачать полностью всю базу. 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963821
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как пользователь может это делать (скачивать) помимо программ, которые мы пишем?!
А программа имеет в виду легальные действия. Я столкнулся с самой примитивной ситуацией: на сайте есть регистрация, и человек может прислать свою фотку. Я что после этого - не могу ему ПОКАЗАТЬ ее?! Бред.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963828
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скачать можно любой файл набрав в браузере его адрес (конечно, если в IIS расширение данного файла не связано с каким либо ISAPI фильтром). К примеру http://your_site/app_data/aspnetdb.mdb. Поэтому ASP.NET Runtime запрещает скачивание любых файлов из этой папки. 
( Блог программиста )
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33963830
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно.

Но ведь из накопленного добра в App_Data надо что-то и употреблять на дело.

Например, если там есть текстовый файлик, то я его могу спокойно прочесть из программы. Речь идет о том, чтобы уметь оттуда и фотографию когда надо показать. Это ведь действительно бывает надо сделать.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33966552
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привожу рецепт отображения фотографии с использованием handler'a.
1) в состав своего Web-проекта включаем модуль HandlerPhoto.ashx со странным суффиксом "ashx" следующего содержания:
<%@ WebHandler Language="C#" Class="HandlerPhoto" %>

using System;
using System.IO;
using System.Web;

public class HandlerPhoto : IHttpHandler {
//-------------------------------------------------------------------------
    public bool IsReusable {
        get {
            return true;
        }
    }
//-------------------------------------------------------------------------
    public void ProcessRequest (HttpContext context) {
        Stream stream= null;
fyle fle;
System.IO.MemoryStream ms= new System.IO.MemoryStream();
        string fnam;


        fnam= context.Server.MapPath("~/App_Data/RegisteredPhoto.jpg");
fle= fyle.Obtain(fnam);
if (fle == null)
return;
stream= fle.Stream;

//ms= fyle.All(fnam); // Моя команда, означающая считывание
// // содержимого файла в память
//ms.WriteTo(Response.OutputStream);


        // Set up the response settings
        context.Response.ContentType= "image/jpeg";
        context.Response.Cache.SetCacheability(HttpCacheability.Public);
        context.Response.BufferOutput= false;

        context.Response.Clear();
        // Write image stream to the response stream
        const int buffersize = 1024 * 16;
        byte[] buffer = new byte[buffersize];
        int count= stream.Read(buffer, 0, buffersize);
        while (count > 0) {
            context.Response.OutputStream.Write(buffer, 0, count);
            count= stream.Read(buffer, 0, buffersize);
}
fyle.Giveup(ref fle);
    }
}

 (здесь немножко используется мой класс fyle, но это несущественно).
 
2) выбираем место для фотографии в нужном нам модуле таким образом:
<img id="imgPhotoRegistered" alt="Registrated Photo" src="HandlerPhoto.ashx" />


  Интересно, что когда мы начнем писать это и дойдем до src=, то студия САМА предложит нам этот модуль наряду с jpg и прочим.
 
3) При этом в соответствующем .aspx.cs мы не пишем НИЧЕГО.
 
Всё. Почему-то это работает.
 
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33967620
xiety
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hilsoft: Почему, почему, почему (??) вы не хотите просто сохранять картинки из базы в любую другую директорию кроме app_data и просто ссылаться на неё в image src, без хэндлеров и всего другого нагромождения? почему?
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33967671
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторhilsoft: Почему, почему, почему (??) вы не хотите просто сохранять картинки из базы в любую другую директорию кроме app_data и просто ссылаться на неё в image src, без хэндлеров и всего другого нагромождения? почему?
меня например интересовало - почему он из БД нехочет считывать в поток фотку и подставлять на страницу вообще без сохранения на HDD (в любой папке) - ответа я так и ненашёл - хозяин-барин (как говорится ;)
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33968168
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы спрашиваете: "Почему, почему, почему (??) вы не хотите просто сохранять картинки из базы в любую другую директорию кроме app_data" ?

А вы УМЕЕТЕ (программно) сохранять картинки (как и всё остальное) куда-нибудь помимо App_Data?
Лично я - не умею, поскольку получаю прерывание от сервера по защите. Что вполне логично.

Если кто-нибудь умеет что-нибудь сохранять (программно), например, в папку IMAGES - научите меня пожалуйста.
...
Рейтинг: 0 / 0
Почему не-в-автономе не показывается фотография?
    #33968199
hilsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я согласен с Вашей критикой, дорогой vladgrig!

Можно считывать фотку прямо в память из БД, минуя всякое переписывание на диски.
Тем более, что СУБД моя самодельная (см. www.hilsoft.ru) - и я вообще могу с ней делать шо хош.
Надо бы доработать.

(Честно говоря, я был так напуган и растерян от этого неожиданного препятствия, что об оптимальности не думал).
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Почему не-в-автономе не показывается фотография?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]