Вы можете использовать несколько разных протоколов:
- FTP (уже упоминалось)
- SCP (передача данных по SSH, если NAS поддерживает это, и для этого вам нужно использовать библиотеку libssh2 C)
- На основе HTTP: WebDAV, если ваш NAS поддерживает это
- На основе HTTP: "обычный" HTTP-сервер с некоторыми сценариями, обрабатывающими загрузку с помощью запросов POST
Все зависит от того, что поддерживает NAS. Говоря о NAS: есть маленькие, тупые и большие, которые в основном представляют собой Linux. Если у вас есть полный контроль над NAS и у вас есть более крупный сервер, вы также можете использовать его HTTP-сервер и использовать скрипт (PHP, Perl, Ruby или любой другой) для обработки данных, отправляемых на NAS. При таком подходе также будет легко отображать на телефоне больше информации о состоянии.
Например, в решении 4 вы можете отобразить веб-страницу со всеми уже загруженными файлами для пользователя и, например, отобразить сообщения о состоянии.