Лучший способ передать изображение на сервер? - PullRequest
8 голосов
/ 24 мая 2010

У меня есть приложение SL3, которое должно иметь возможность передавать изображение на сервер, а затем сервер сгенерирует файл PDF с изображением в нем и отобразит его пользователю.

То, что у меня уже есть, это:

(1) Код для преобразования изображения в байтовый массив (2) Код для создания PDF-файла с изображением

Основная проблема, с которой я сталкиваюсь, заключается в следующем:

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

var button = new NavigationButton();

button.NavigateUri = new Uri("http://localhost:3616/PrintReport.aspx?ReportIndex=11&ActionType=Get&ReportIdentifier=" + reportIdentifier.ToString() + "");

button.TargetName = "_blank";

button.PerformClick();

Первоначально я передавал изображение в веб-службу WCF (в виде байтового массива), а затем «переходил» на страницу ASP.NET, на которой отображался бы отчет. Однако, если я сделаю это, я не смогу использовать свой собственный класс HyperlinkButton, и некоторые браузеры, включая Safari, заблокируют открытие нового окна. Таким образом, представляется, что единственным вариантом является использование класса HyperlinkButton.

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

Если я загружаю изображение в форму ASP.NET, а затем использую класс HyperlinkButton для перехода на страницу PrintReport, это не будет работать, поскольку приложение перейдет на страницу PrintReport до того, как система завершит загрузку изображения. Я не могу передать его веб-службе, так как для этого потребуется перейти на страницу PrintReport.aspx в коде обратного вызова веб-метода, которому я буду передавать изображение, и HyperlinkButton не разрешит это на основе по правилам безопасности.

Любая помощь или идеи будут оценены.

Спасибо.

Chris

1 Ответ

1 голос
/ 24 мая 2010

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

Загрузка файлов с помощью HTTPWebrequest (multipart / form-data)

показывает, как загрузить на стандартную страницу aspx

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

Это позволяет вам получить доступ к httpcontext в сервисе wcf. Выгода, конечно, в том, что вы подключаете свой сервис к ASP ....

Посмотрите здесь http://blogs.msdn.com/wenlong/archive/2006/01/23/516041.aspx для более подробной информации о режиме совместимости ASP.

Ваш процесс становится:

Загрузить в Webservice -> добавить в кеш

Перейдите на страницу -> Получить из кеша

надеюсь, что одно из этих предложений поможет

если нет, вернись ко мне!

...