REST API с изображениями

Попробуйте передать объект как второй параметр для вашего сопоставления.

entity = Mapper.Map<EntityDto, Entity>(model, entity);

В противном случае экземпляр вашего объекта перезаписывается новым экземпляром, и вы теряете объект, созданный в первой строке.

1
задан treyBake 11 March 2019 в 13:58
поделиться

2 ответа

Два подхода:

  • Создать конечную точку «обертки», которая является просто прокси для самого конечного изображения (например, внутренне readfile(), см. Это: https: // stackoverflow.com/a/1353867/1364793)
  • Храните изображения в статической, доступной через Интернет папке (или даже рассматривайте S3 как хранилище для статических ресурсов). Затем ваша основная конечная точка просто возвращает общедоступные URL-адреса.
0
ответ дан Dzhuneyt 11 March 2019 в 13:58
поделиться

Вы пишете, что служите изображениям в виде блобов с кодировкой base64 из-за проблем с безопасностью, включая очистку.

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

Чтобы улучшить производительность на стороне сервера, вы можете кэшировать закодированную версию; Вы можете записать $ b64largeImage на диск в том же каталоге, проверить, существует ли он, и отправить его клиенту.

Чтобы сократить время передачи, убедитесь, что на сервере включен GZIP; это должно сжать ваши данные.

Тем не менее, производительность на стороне клиента останется проблемой - ваши изображения, скорее всего, не будут кэшироваться на клиенте, а декодирование изображений (особенно если их 40 на каждой странице) может потреблять приличное количество ресурсов ЦП (особенно на мобильных устройствах). устройства).

Затем возникает проблема, заключающаяся в том, что если браузер может декодировать изображение, а аттаксер / скребок - тоже, и они могут сохранить копию этого изображения. Таким образом, все эти усилия не на самом деле приносят вам большую секретность.

Конечно, вы можете не захотеть, чтобы третьи лица встраивали ваши изображения в их страницы, или вы можете не допустить, чтобы они легко царапали ваши изображения.

В этом случае вы можете сосредоточиться на том, чтобы URL-адреса трудно / невозможно угадать или срок их действия истек. Это повредит вашему SEO, так что это компромисс. S3 имеет URL-адреса с истекшим сроком действия, или вы можете создать службу, которая проверяет реферер для каждого запроса и обрабатывает только запросы изображений из доменов, занесенных в белый список, или создать собственную службу URL-адресов с истекающим сроком действия - но в каждом случае вы будете использовать JPEG / GIF / PNG изображения, так что вы получите небольшой размер файла и ограниченное время декодирования.

0
ответ дан Neville Kuyt 11 March 2019 в 13:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: