ASP.Net: Написание кусков файла ... Загрузка файла с резюме

2

Обратитесь к вопросу: Резюме в управлении файлами загрузки

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

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

Процедура, о которой я подумал, это:

  • Создайте временный файл с уникальным именем (может быть GUID) на сервере.
  • Прочитайте фрагмент файла и добавьте его в этот временный файл на сервере.
  • Продолжайте выполнение шагов с 1 по 3 до тех пор, пока не будет достигнута EOF.
  • Теперь, если соединение потеряно или пользователь нажимает кнопку pause, запись файла прекращается, и временный файл не удаляется.
  • Повторное нажатие на повторное включение или повторный загрузку того же файла проверит сервер, если файл существует, и пользователь должен ли он resume или overwrite. (Не знаете, как проверить, является ли он одним и тем же файлом. Также, как шаг отправки кусков от клиента к серверу.)
  • Нажав на resume, начнется с того места, где он должен быть загружен, и добавит его в файл на сервере. (Снова не уверен, как это сделать.)

Вопросы:

  • Правильны ли эти шаги для достижения цели? Или нужны некоторые изменения?
  • Я не уверен, как реализовать все эти шаги.:-( Нужны идеи, ссылки...

Любая помощь ценится...

  • 0
    Вы когда-нибудь заканчивали это? Если да, можете ли вы опубликовать свои выводы?
Теги:
file-upload

1 ответ

2

То, что вы пытаетесь, непросто, но это выполнимо. Следуйте этим рекомендациям:

  • Напишите 2 функции на стороне клиента с помощью ajax:

    • getUploadedPortionFromServer(filename) - это спросит сервер, существует ли файл, и он должен получить ответ xml с сервера со следующей информацией:
      boolean(exist/not exist), size(bytes), md5(string)
      Функция также будет запускать md5 с тем же размером, который он получил от сервера в локальном файле,
      Если md5 является одним и тем же, вы можете продолжить отправку с момента его остановки,
      elseif не то же самое или размер == 0, начните сначала.
    • uploadFromBytes(x) - будет зависеть от первой функции.

  • На сервере вам нужно написать соответствующие функции, которые будут проверять необходимые данные и отправлять ответ через XML клиенту.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню