티스토리 뷰

반응형

[Unity]유니티에서 Ftp 업로드 + 프로그래스바 구현(소스있음)

 

#기존에 공유했던 FTP 라이브러리를 기반으로 Unity에서 FTP 업로드 샘플 프로그램을 만들었다

https://gofogo.tistory.com/95

 

#완성된 프로그램

 

 

#이미지와 텍스트를 이용하여 프로그래스바 구현

#기존 FTP 라이브러리 적용하여 연결

 

public class FtpController : MonoBehaviour
{

    [SerializeField]
    Text txt_value;
    [SerializeField]
    Text txt_count;
    [SerializeField]
    Text txt_filename;

    [SerializeField]
    RectTransform pg;

    [SerializeField]
    int max_pg;

    Ftp ftp;
    // Start is called before the first frame update
    void Start()
    {
        Init();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void Init()
    {
        ftp = new Ftp("192.168.0.107", "ftpuser", "1");
        ftp.UploadFileAsyncCompleted += Ftp_UploadFileAsyncCompleted;
        ftp.UploadFileListChanged += Ftp_UploadFileListChanged;
        ftp.UploadProgressChanged += Ftp_UploadProgressChanged;
    }

    public void Upload()
    {
        //업로드 할 업로드 객체 생성
        List<FtpUploadDirectory> items = new List<FtpUploadDirectory>();
        FtpUploadDirectory item = new FtpUploadDirectory("test");

        //객체 별로 초기화 및 담기
        FtpUploadFile ff1 = new FtpUploadFile("1.mp4", @"d:\a\1.mp4");
        FtpUploadFile ff2 = new FtpUploadFile("2.mp4", @"d:\a\2.mp4");
        FtpUploadFile ff3 = new FtpUploadFile("3.mp4", @"d:\a\3.mp4");
        item.Add(ff1);
        item.Add(ff2);
        item.Add(ff3);
        items.Add(item);
        ftp.UploadFileListAsync(items);
    }

    string temp = string.Empty;

    //업로드 진행 중 이벤트
    private void Ftp_UploadProgressChanged(object sender, FtpUploadProgressChangedEventArgs e)
    {
        //이전 상태와 같으면 
        if (!temp.Equals(e.ProgressPercentage.ToString()))
        {
            pg.sizeDelta = new Vector2(((float)e.ProgressPercentage * (float)0.01) * max_pg,50);
            txt_value.text = $"{e.ProgressPercentage.ToString()}%";
    }
    temp = e.ProgressPercentage.ToString();
    }

    private void Ftp_UploadFileListChanged(object sender, FtpUploadFileListChangedEventArgs e)
    {
        txt_filename.text = e.UploadFileName;
        txt_count.text = $"{e.UploadCount}/{e.UploadTotalCount}";
    }
    private void Ftp_UploadFileAsyncCompleted(object sender, FtpAsyncCompletedEventArgs e)
    {
        clear();
    }

    public void clear()
    {
        txt_value.text = "0%";
        txt_count.text = "0/0";
        txt_filename.text = string.Empty;
        pg.sizeDelta = new Vector2(0, 50);
    }
}

 

#파일 첨부(Assets)

ftp_test.zip
0.02MB

Ftp Dll

scripts

assets

 

#ftp sample #unity #유니티 #Ftp 업로드 #프로그래스바

반응형
댓글
반응형