Как отправить и получить файл? - PullRequest
0 голосов
/ 16 мая 2011

Я хочу следующий тип функциональности

Два пользователя A и B оба посещают одну и ту же страницу.
На этой странице есть кнопка (Отправить файл).
Когда A нажимает кнопку, должно появиться окно Open Dialog
Когда A выбирает файл из поля Open Dialog, на странице B должна быть ссылка, содержащая файл name
Когда B нажимает на ссылку, должно появиться диалоговое окно SaveAs, после которого должна начаться загрузка файла с именем и путем.

Любая помощь в этом контексте будет признательна!

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Открыть диалог можно с помощью ввода html: <input type="file">

Диалоговое окно «Сохранить как» открывается с помощью привязки html: <a href="www.myserver.com/download.aspx?filename='the file'">

После того, как пользователь A выберет файл, вы либо используете AJAX, либо отправляете форму для отправки файла через созданную вами страницу upload.aspx.

На компьютере пользователя B вы используете AJAX для вызова страницы updatefilelist.aspx, которая возвращает список доступных файлов. Как только новый файл пользователя A был загружен и сохранен на сервере, следующий пинг от AJAX-вызова пользователя B к updatefilelist.aspx обновит список, отображаемый на его экране, чтобы включить новый файл.

Нажатие на файл вызывает страницу download.aspx с желаемым именем файла - вам нужно установить Response.ContentType и Response.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """") здесь. Откроется диалоговое окно «Сохранить как».

1 голос
/ 16 мая 2011

Ну, страницу можно разделить на две половины: одну с элементами управления загрузкой файлов, а другую, которая опрашивает каждые 3-4 секунды через AJAX, чтобы увидеть, есть ли новые файлы.

Сторона "A" имеет стандартный элемент управления загрузкой файлов и использует стандартный способ сохранения загруженных файлов в .NET (см. FileUpload.PostedFile.SaveAs (путь), простые вещи).После завершения загрузки файла обновите эту страницу.

Сторона "B" - это div, который получает свое содержимое из вызова AJAX, XML, JSON или просто старого текста.Создайте страницу AJAX с именем "link.aspx", которая возвращает содержимое в любом формате.

Для ссылок, если вы хотите открыть окно «загрузки», либо файлы должны быть того типа, который обычно не отображается в браузере, либо вам нужно использовать другую страницу aspx для показаиз файла и принудительно диалоговое окно, чтобы сохранить или открыть.

Эта страница aspx будет называться что-то вроде "file.aspx", и вы можете передать параметр строки запроса ("id" или что-то), чтобы сказать ему, чтофайл, который вы хотите.Ваш код этой страницы определит, какой файл вам нужен из этого параметра строки запроса, а затем выдаст файл:

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.fileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "image/jpeg"; // you gotta figure out the content type of the file here though. This is just the one for JPEGS.

byte[] buffer = new byte[file.Length];
dl.Read(buffer, 0, (int)file.Length);

Response.BinaryWrite(buffer);
Response.End();
...