Как я могу очистить изображение, которое не имеет расширения? - PullRequest
0 голосов
/ 18 января 2012

Иногда я сталкиваюсь с изображением, которое не могу очистить, чтобы его можно было сохранить.Примером этого является:

https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487

Когда я нажимаю URL-адрес из Internet Explorer, я вижу изображение, но когда я пытаюсь получить его из кода ниже, я получаю следующее сообщение об ошибке«System.Net.WebException Удаленный сервер возвратил ошибку: (403) Запрещена» ошибка с GetResponse:

string url = "https://s3.amazonaws.com/plumdistrict.com-production/perks/12321/image/original.?1325898487";
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();

Есть идеи, как получить это изображение?

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

Я могу сохранить изображения, которые имеют расширения.Например, я могу просто поцарапать следующее изображение:

https://s3.amazonaws.com/plumdistrict.com-production/perks/12659/image/original.jpg?1326828951

Ответы [ 2 ]

1 голос
/ 18 января 2012

Хотя изначально предполагается, что HTTP не имеет состояния, существует множество реализаций, которые полагаются на то, что он не имеет состояния. Я мог бы настроить свой веб-сервер так, чтобы он принимал запросы только на «http://mydomain.com/sexy_avatar.jpg"», если вы предоставляете cookie, подтверждающий, что вы вошли в систему. Если нет, я отправляю вам перенаправление 303 на «http://mydomain.com/avatar_for_public_use.jpg".

».

Amazon может делать то же самое. Попробуйте загрузить веб-страницу с помощью Chrome и посмотрите на представление «Сеть» в режиме разработчика (CTRL + SHIFT + J), чтобы увидеть все заголовки, представленные на веб-сайте. Возможно, вам даже нужно выполнить полную навигацию в том же сеансе, прежде чем вы сможете увидеть изображение. Это, безусловно, относится ко многим разработанным мной веб-приложениям: -)

0 голосов
/ 18 января 2012

Ну, похоже, он генерируется из скрипта (возможно, извлекается из базы данных).Сервер должен отправлять файл / тип контента, чтобы согласиться с этим ... но это не так, что я считаю нарушением стандартов.

Мой LinuxBox прекрасно знает, что это изображение JPEG, как только оно окажется на моем жестком диске, потому что оно проверяет заголовки файлов, а не полагается на расширения.Возможно, в Windows есть инструмент, который делает то же самое?

Редактировать: На самом деле, при дальнейшем рассмотрении кажется странным, что вы получите 403 за это.Возможно, сервер фактически блокирует вам получение файла таким способом.

...