Перейти к содержанию
Fire Monkey от А до Я
  • 0

Сохранение данных из Андроид устройства в сетевую папку.


Вопрос

Помогите решить проблему. Есть андроид-планшет, есть серверный ПК. Нужно данные, вводимые на планшете сохранить в сетевую папку на сервере. Может есть возможность подключить сетевой ресурс на андроид планшете, либо напрямую сохранять в сетевую папку.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Тоже думал что должно получиться, но...  Выдает ошибку  Cannot create file.... Not a directory.

Изменено пользователем Евгений Гайдук
Ссылка на комментарий
  • 0

Естественно, права на запись и чтение даны. При чтении та же ошибка только cannot open file... При работе из той же сети с планшета на Винде, ошибок нет никаких. И пишет и читает файл замечательно, но на андроид совсем другое дело. Нахрапом не получается. Видимо должен быть другой способ. Вот только какой?

Ссылка на комментарий
  • 0

Авторизация при входе на сервер есть?
Возможно винда просто запомнила ваш логин/пароль и не требует его.
Попробуйте на андроид-девайсе запустить какойнить файловый менеджер (ES file manager например) и зайти на сервер. Авторизацию будет просить? Имхо, если админ не баклан - будет (ессно, при условии что вы делаете это в офисе а не дома))).

Ссылка на комментарий
  • 0

Попробую  авторизацию завтра. 

Если все же авторизацию запрашивает и не пускает именно из-за этого, то я уверен что ошибка выглядела бы немного иначе... А так она указывает что само построение запроса пути не верное. Кажется мы не туда роем...

Ссылка на комментарий
  • 0
1 минуту назад, Евгений Корепов сказал:

В Андроид нет встроенных средств работы по протоколу NetBIOS/NetBEUI. Вам придется реализовать его самостоятельно с нуля.

ОК. Я подозревал подобное. А как тогда возможно програмно передать файл на ПК?

Ссылка на комментарий
  • 0

Добавлю что есть десяток других, менее затратных способов выполнить вашу задачу. Начиная от загрузки по HTTP или FTP, заканчивая использованием облачных хранилищ. 

Ссылка на комментарий
  • 0
Только что, Евгений Корепов сказал:

Добавлю что есть десяток других, менее затратных способов выполнить вашу задачу. Начиная от загрузки по HTTP или FTP, заканчивая использованием облачных хранилищ. 

Все было бы хорошо, но у сети нет выхода на широкий интернет и на сервере развернуть HTTP врядли позволят. Уперся в стену. 

 

Ссылка на комментарий
  • 0
Только что, Евгений Гайдук сказал:

Все было бы хорошо, но у сети нет выхода на широкий интернет и на сервере развернуть HTTP врядли позволят. Уперся в стену. 

 

Давайте определимся что из себя представляет ваш "Серверный ПК". Операционная система? Если у вас к нему доступ? Можете ли вы управлять им по своему усмотрению?

Ссылка на комментарий
  • 0

Серверный ПК - виртуальная машина под управлением Windows Server 2012. Доступ к нему есть, но управление ограничено политикой невмешательства, то есть могу вносить минимальные изменения в фаловой структуре; Запрещено устанавливать какое-либо дополнительное ПО без муторной и долгой процедуры согласования. ☹️

 

Ссылка на комментарий
  • 0

Вот, по моему мнению, самый просто и быстрый способ:

 Устанавливаете на сервере FTP сервер. К примеру SlimFTPd (http://www.whitsoftdev.com/slimftpd/), его можно запустить как сервис. Не забываете настроить папку, пользователя (с паролем) и остальное. Там все просто.

В своем приложении отправка файла на FTP сервер займет у вас несколько строчек:

  IdFTP:=TIdFTP.Create;
  IdFTP.Host:=Host;
  IdFTP.Username:=ALogin;
  IdFTP.Password:=APassword;
  IdFTP.Passive:=True;
  IdFTP.TransferType:=ftBinary;
  IdFTP.ReadTimeout:=ConstFTPTimeout;
  IdFTP.TransferTimeout:=ConstFTPTimeout;
  try
    IdFTP.Connect;
  except
    on E : Exception do
    begin
      Error:=True;
      ErrorMessage:=E.Message;        
    end;
  end;
  AFilePathLocal:='Путь к файлу который хотите отправить';
  AFilePathRemote:='/Download/';
  if TFile.Exists(AFilePathLocal) then
    try
      IdFTP.Put(AFilePathLocal, AFilePathRemote);
    except
      on E : Exception do
      begin
        Error:=True;
        ErrorMessage:=E.Message;        
      end;
    end;
  IdFTP.Disconnect;
  IdFTP.Free;

Вот как то так.

P.S. Не верно написал путь для отправки.

Исправил AFilePathRemote:='ftp://192.168.0.150/Download/'; на AFilePathRemote:='/Download/';

Изменено пользователем Евгений Корепов
Исправление кода
Ссылка на комментарий
  • 0
9 минут назад, Евгений Гайдук сказал:

Серверный ПК - виртуальная машина под управлением Windows Server 2012. Доступ к нему есть, но управление ограничено политикой невмешательства, то есть могу вносить минимальные изменения в фаловой структуре; Запрещено устанавливать какое-либо дополнительное ПО без муторной и долгой процедуры согласования. ☹️

 

В это операционке уже есть встроенный FTP сервер. Кривой, но работать будет. Включить его и настроить очень просто.

Ссылка на комментарий
  • 0
3 минуты назад, Евгений Корепов сказал:

Устанавливаете на сервере FTP сервер.

Это был мой резервный вариант. Хотелось обойтись без дополнительных костылей, но видимо прийдется так. Теплилась надежда что я просто может чего не знаю и все таки передача файлов с Андроида на Винду - задача простая, а я что-то упустил.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...