Форма XAML WPF, сгенерированная на лету - как ссылаться на элементы xaml позже

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

У меня была такая же проблема: пару недель назад действительно невозможно достичь «чистой» загрузки через AJAX, Filament Group создала плагин jQuery, который работает точно так, как вы уже узнали, он называется Загрузка файла jQuery , однако есть недостатки этой методики.

Если вы отправляете большие запросы через AJAX (скажем, файлы + 1 МБ), это будет отрицательно влиять на отзывчивость. В медленных подключениях к Интернету вам придется ждать много , пока не будет отправлен запрос, а также дождитесь загрузки файла. Это не похоже на мгновенный «щелчок» => «всплывающее» => «начало загрузки». Это больше похоже на «click» => «подождите, пока данные будут отправлены» => «wait for response» => «start start», из-за чего он будет выглядеть вдвое большим, потому что вам придется ждать отправки запроса через AJAX и вернуть его в качестве загружаемого файла.

Если вы работаете с небольшими размерами файлов & lt; 1MB, вы этого не заметите.

Мое приложение позволяет пользователям экспортировать изображения, динамически сгенерированные, эти изображения отправляются через запросы POST в формате base64 на сервер (это означает, что для больших файлов это невыносимо. является единственным возможным способом), затем обрабатывается и отправляется обратно пользователям в виде файлов .png, .jpg, base64 для изображений + 1 МБ огромны, поэтому пользователи вынуждены ждать больше, чем необходимо для начала загрузки файла. В медленных интернет-соединениях это может быть очень неприятно.

Моим решением для этого было временно записать файл на сервер, как только он будет готов, динамически создать ссылку на файл в виде кнопки, которая меняет между «Подождите ...» и «Загрузить», и в то же время напечатайте изображение base64 во всплывающем окне предварительного просмотра, чтобы пользователи могли «щелкнуть правой кнопкой мыши» и сохранить его. Это делает все время ожидания более приемлемым для пользователей, а также ускоряет работу.

Обновление 30 сентября 2014 года:

Месяцы прошли с тех пор, как я опубликовал это, наконец, я «Мы нашли лучший подход к ускорению работы при работе с большими строками base64. Теперь я храню строки base64 в базе данных (используя longtext или longblog fields), затем передаю свой идентификатор записи через файл загрузки jQuery, наконец, в файле сценария загрузки я запрашиваю базу данных с помощью этого идентификатора, чтобы вытащить строку base64 и передать ее функция загрузки.

Пример сценария загрузки:

MyQueries->GetDownload( $downloadID );
// base64 tags are replaced by [removed], so we strip them out
$base64     = base64_decode( preg_replace('#\[removed\]#', '', $data[0]->image) );
// This example is for base64 images
$imgsize    = getimagesize( $base64 );
// Set content headers
header('Content-Disposition: attachment; filename="my-file.png"');
header('Content-type: '.$imgsize['mime']);
// Force download
echo $base64;
?>

Я знаю, что это намного выше того, что задал ОП, однако я чувствовал, что это будет хорошо чтобы обновить мой ответ своими выводами. Когда я искал решения моей проблемы, я читал много потоков «Загрузка из AJAX POST», которые не дали мне ответа, который я искал, я надеюсь, что эта информация поможет кому-то найти что-то подобное.

0
задан cmwoodman 7 March 2019 в 16:18
поделиться