FTP синхронизация - PullRequest
       1

FTP синхронизация

1 голос
/ 20 сентября 2011

Я играю с использованием FTP для периодической загрузки небольших файлов данных из программы на сервер.Пользователи получают доступ к данным с веб-страницы, которая читает данные с помощью функции javascript XMLHttpRequest.Кажется, все работает, но я борюсь с некоторыми проблемами, вызванными тем, что FTP и XMLHttpRequest получают друг друга.Единственная идея, которая мне пришла в голову, - это повторить неудачные загрузки и обнаружить либо ошибочные XMLHttpRequests, либо те, которые возвращают неполные данные, и повторить их.

Я хотел бы использовать что-то простое, например, FTP, так как пользователи приложениявероятно, не сможет размещать серверы (они, вероятно, находятся за маршрутизаторами NAT и не имеют фиксированных IP-номеров) и не имеют доступа к каким-либо необычным внешним серверам.

У кого-нибудь есть предложения?

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

Что если вы избежите проблем с блокировкой файлов, загрузив файл с временным именем и переименовав его?

псевдо-код:

FTPSend "c:\readme.txt" /as "readme.txt.tmp"
if error retry FTPSend
FTPRename "readme.txt.tmp" /as "readme.txt"
if error retry rename

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

1 голос
/ 20 сентября 2011

Scrap FTP (это не подходит для NAT) и загрузка через HTTP.У вас уже есть система, которая может обрабатывать HTTP (поскольку вы используете XHR).Вы можете принять перегрузки через запрос POST и включить некоторую проверку целостности перед перезаписью существующего контента или объявлением нового контента.

0 голосов
/ 22 сентября 2011

Мое приложение предназначено для использования людьми, у которых нет доступа к серверу, которым они могут управлять. То есть они могут использовать файловое пространство, предоставленное провайдером или каким-либо бесплатным FTP-сайтом Поэтому любая функция http post не будет работать.

Поэтому я использую FTP с предложением переименования выше.

1) удалить файл TEMP.htm, если он существует 2) загрузить filr TEMP.htm 3) удалите целевой файл, повторите попытку несколько раз 4) переименуйте TEMP.htm в целевой файл

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...