Страница 1 из 1

FTP android выгрузка

СообщениеДобавлено: 07 апр 2019, 16:53
1100001001
Вопрос кажется простой :( Как выгрузить файл с андроида на FTP сервер? Может есть какие то ограничения в версии Unity? Есть метод:
Синтаксис:
Используется csharp
public void UploadFile()
    {
        FilePath = Application.persistentDataPath + "/data.txt";

        WebClient client = new System.Net.WebClient();
        Uri uri = new Uri(FTPHost + new FileInfo(FilePath).Name);

        client.UploadProgressChanged += new UploadProgressChangedEventHandler(OnFileUploadProgressChanged);
        client.UploadFileCompleted += new UploadFileCompletedEventHandler(OnFileUploadCompleted);
        client.Credentials = new System.Net.NetworkCredential(FTPUserName, FTPPassword);
        client.UploadFileAsync(uri, "STOR", FilePath);
    }


Код работает на WIndows сборках и Web сборках, но не работает на андроиде...Помогите разобраться в чём причина. Может под андроид нужно как то по другому писать выгрузку на FTP?

Re: FTP android выгрузка

СообщениеДобавлено: 07 апр 2019, 18:00
1max1
Возможно это подойдет:
https://docs.unity3d.com/Manual/UnityWe ... wData.html

Re: FTP android выгрузка

СообщениеДобавлено: 08 апр 2019, 00:40
1100001001
Хотелось бы разобраться почему FTP не работает, то что ты предлагаешь я так понимаю на принимающей стороне должен сервер работать который обработает входящий запрос.

Re: FTP android выгрузка

СообщениеДобавлено: 08 апр 2019, 13:58
1100001001
Если кому интересно заработало только так:
Синтаксис:
Используется csharp
IEnumerator FTPUpload2()
    {
        var filename = Application.persistentDataPath + "/data.txt";
        bool isUploading = false;

        ThreadPool.QueueUserWorkItem((o) =>
        {
            FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(FTPHost+ "/data.txt");

            ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
            ftpWebRequest.Credentials = new NetworkCredential(FTPUserName, FTPPassword);
            ftpWebRequest.UsePassive = true;
            ftpWebRequest.UseBinary = true;
            ftpWebRequest.KeepAlive = true;

            StreamReader sourceStream = new StreamReader(filename);
            byte[] fileBytes = File.ReadAllBytes(filename);
            sourceStream.Close();
            ftpWebRequest.ContentLength = fileBytes.Length;

            Stream requestStream = ftpWebRequest.GetRequestStream();
            requestStream.Write(fileBytes, 0, fileBytes.Length);
            requestStream.Close();

            FtpWebResponse ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
            ftpWebResponse.Close();

            isUploading = true;
        });

        while (!isUploading)
        {
            yield return new WaitForSeconds(0.1f);
        }
    }