\ DriveHQ Customer Support Forum \
Đã đọc/Trả lời : 103751/7
  • DriveHQSupport_
  • (676bài đăng)
Mã mẫu chương trình FTP client (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Nhiều người dùng đã hỏi về cách kết nối với máy chủ FTP của DriveHQ trong các dự án phần mềm của họ. Trong thông báo này, trước tiên chúng tôi muốn cung cấp một số thông tin chung về FTP, sau đó là một số mã nguồn C#.

DriveHQ cung cấp dịch vụ lưu trữ máy chủ FTP. Chúng tôi hỗ trợ các giao thức FTP và FTPS thông thường. Một trong những ưu điểm chính của dịch vụ FTP của chúng tôi là: nó được tích hợp liền mạch với các dịch vụ CNTT đám mây rộng lớn của chúng tôi. Người dùng có thể truy cập các tệp FTP của họ bằng trình duyệt web. ổ đĩa được ánh xạ (WebDAV) hoặc phần mềm quản lý tệp DriveHQ FileManager. Họ cũng có thể sử dụng công cụ Quản trị nhóm dựa trên web của chúng tôi để tạo và quản lý người dùng FTP (người dùng phụ).

Giao thức FTP thông thường được coi là không an toàn vì nó truyền dữ liệu mà không mã hóa. Để có bảo mật SSL mạnh mẽ, bạn có thể sử dụng FTPS (FTP qua SSL/TLS). Có hai phương pháp để kích hoạt bảo mật SSL:

Ngầm định: Ứng dụng FTP client kết nối trực tiếp đến một số cổng FTPS đặc biệt (mặc định là 990);

Rõ ràng (FTPES): Ứng dụng FTP client kết nối đến cổng FTP thông thường số 21, sau đó phát lệnh STARTTLS để nâng cấp bảo mật.

Máy chủ FTP của DriveHQ hỗ trợ cả FTPS và FTPES. Hầu hết các ứng dụng khách FTP đều hỗ trợ FTPS và FTPES, ví dụ như FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP và Fetch, v.v.

Có một giao thức truyền tải tập tin an toàn khác tên là SFTP, thường bị nhầm lẫn với "Secure FTP"; trên thực tế, nó có nghĩa là "SSH File Transfer Protocol", một giao thức truyền tải tập tin hoàn toàn khác. Về mặt bảo mật, SSL/TLS và SSH gần như tương đương nhau. Rõ ràng SSL/TLS phổ biến hơn SSH. Máy chủ FTP của DriveHQ không hỗ trợ SFTP vì chúng tôi không thấy cần thiết phải sử dụng SFTP.

Chế độ chủ động và thụ động FTP:

Một kết nối FTP có thể bao gồm hai kết nối TCP (kênh), kênh lệnh và kênh dữ liệu. Kênh lệnh được sử dụng để gửi các lệnh FTP; kênh dữ liệu được sử dụng để truyền tải lượng dữ liệu lớn. Chế độ FTP chủ động yêu cầu máy chủ FTP kết nối ngược lại với máy khách FTP để thiết lập kết nối dữ liệu. Điều này thường được coi là không an toàn và bị chặn bởi nhiều tường lửa/bộ định tuyến. Chế độ FTP thụ động yêu cầu máy khách FTP kết nối với máy chủ FTP trên một số cổng khác. Nó được coi là an toàn và hiếm khi bị chặn. Máy chủ FTP của DriveHQ hỗ trợ cả FTP chủ động và thụ động. Tuy nhiên, nếu bộ định tuyến/tường lửa hoặc phần mềm bảo mật của bạn chặn FTP chủ động, thì nó sẽ không hoạt động. Điều đáng chú ý là hầu hết các bộ định tuyến mới đều hỗ trợ FTP chủ động.

Xin lưu ý: Trình khách FTP dòng lệnh của Microsoft không hỗ trợ FTP thụ động. Hầu hết các chương trình khách FTP khác đều hỗ trợ cả FTP chủ động và FTP thụ động.

FTP và ProFTP

DriveHQ có hai máy chủ FTP, một là ftp.drivehq.com, dành cho tất cả người dùng; máy chủ còn lại là proftp.drivehq.com, chỉ dành cho thành viên trả phí (bao gồm cả người dùng phụ của tài khoản nhóm trả phí). Vì proftp.drivehq.com chỉ dành cho thành viên trả phí nên nó không hỗ trợ FTP ẩn danh. Để biết thêm thông tin về dịch vụ lưu trữ máy chủ FTP của chúng tôi, vui lòng truy cập..:

http://www.drivehq.com/servicemanual.aspx#_Toc265186728

 

Mã nguồn mẫu của ứng dụng khách FTP

Đoạn mã nguồn C# sau đây được cung cấp nguyên trạng mà không có bất kỳ sự hỗ trợ nào. Bạn có thể tự do sử dụng nó trong phần mềm của riêng mình hoặc phân phối lại. Mã mẫu này cho thấy cách kết nối với máy chủ FTP của chúng tôi và thực hiện các lệnh FTP, chẳng hạn như LIST, GET và PUT; bạn cũng có thể thấy cách thiết lập để sử dụng FTP thụ động và SSL.


sử dụng hệ thống;
sử dụng System.Collections.Generic;
sử dụng System.Linq;
sử dụng System.Text;
sử dụng System.Threading.Tasks;
Sử dụng System.Net;
sử dụng System.IO;
sử dụng System.Security.Cryptography.X509Certificates;

///
/// Bản quyền (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// Đoạn mã mẫu của ứng dụng khách FTP cho thấy cách kết nối với máy chủ FTP của DriveHQ bằng ngôn ngữ C#.
/// Bạn có thể sử dụng mã nguồn hoặc phân phối lại miễn phí. Mã nguồn được cung cấp nguyên trạng, không kèm theo bất kỳ điều kiện nào 
/// DriveHQ không chịu bất kỳ trách nhiệm pháp lý nào phát sinh từ việc sử dụng mã này.
///
không gian tên FTPClientSample
{
    Chương trình lớp
    {
        static string ftpServer = "ftp.drivehq.com"; // Bạn cũng có thể sử dụng proftp.drivehq.com nếu bạn có tài khoản trả phí.
        static string username = "YOUR_USERNAME"; // Tên người dùng DriveHQ của bạn
        static string password = "YOUR_PASSWORD"; // Mật khẩu DriveHQ của bạn
        static void Main(string[] args)
        {
            // Liệt kê các thư mục trên máy chủ FTP
            //Danh sách("/"); 

            // Tải xuống tệp từ máy chủ FTP
            //DownloadFile("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // Tải tệp lên máy chủ FTP
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        ///
        /// Tải tệp lên máy chủ FTP.
        ///
        /// đường dẫn tệp cục bộ
        /// đường dẫn trên máy chủ FTP, ví dụ: /temp/filename
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            nếu (String.IsNullOrWhiteSpace(srcFilePath))
                ném ngoại lệ ArgumentNullException mới ("Đường dẫn tệp nguồn.");

            if (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Máy chủ UriUri = GetUri(destFilePath);

            // serverUri nên bắt đầu bằng định dạng ftp://.
            nếu (serverUri.Scheme != Uri.UriSchemeFtp)
                Trả về false;

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.UploadFile);

            // đọc nội dung tệp vào mảng byte
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = new byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // gửi nội dung tệp đến máy chủ FTP
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Trạng thái phản hồi: {0} - {1}", response.StatusCode, response.StatusDescription);

            Trả về giá trị đúng;
        }

        ///
        /// Tải tệp tin có đường dẫn srcFilePath từ máy chủ FTP về thư mục destFilePath. Nếu giá trị là null, hãy lưu vào thư mục hiện tại.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            nếu (String.IsNullOrWhiteSpace(srcFilePath))
                ném ngoại lệ ArgumentNullException mới ("Đường dẫn tệp nguồn.");

            if (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Máy chủ UriUri = GetUri(srcFilePath);

            //// serverUri nên bắt đầu bằng định dạng ftp://.
            nếu (serverUri.Scheme != Uri.UriSchemeFtp)
                Trả về false;

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.DownloadFile);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            FileStream fileStream = new FileStream(destFilePath, FileMode.OpenOrCreate, FileAccess.Write);

            byte[] buffer = new byte[32 * 1024];

            trong khi (đúng) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                nếu (bytesRead == 0)
                    phá vỡ;

                fileStream.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();

            Console.WriteLine("Trạng thái phản hồi: {0} - {1}", response.StatusCode, response.StatusDescription);

            Trả về giá trị đúng;
        }

        ///
        /// Liệt kê nội dung của thư mục FTP
        ///
        ///
        ///
        public static string List(string path)
        {

            Uri serverUri = GetUri(path);

            //// serverUri nên bắt đầu bằng định dạng ftp://.
            nếu (serverUri.Scheme != Uri.UriSchemeFtp)
                trở lại ""; 

            FtpWebRequest request = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.ListDirectory);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string result = sr.ReadToEnd();
            Console.WriteLine("Trạng thái phản hồi: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + result);

            Trả về kết quả;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
            request.EnableSsl = true;
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            request.Credentials = new NetworkCredential(username, password);
            request.Method = method;

            yêu cầu trả về;
        }

        private static Uri GetUri(string remoteFilePath)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            return new Uri(ftpServerUri, remoteFilePath);
        }

    }
}
 

10/05/2016 7:01:04 CH

  • ajayreigns
  • (1bài đăng)
Chủ thể: Tôi cần mã VB.NET để kết nối tài khoản PRO DriveHQ
Tôi cần mã VB.NET để kết nối tài khoản PRO DriveHQ

Vui lòng chia sẻ mã Visual Basic .NET để kết nối tài khoản PRO Drive hq


Hồi đáp
19/11/2016 12:25:49 SA

  • arsene16pcs017
  • (1bài đăng)
Chủ thể: Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ
Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

 Chào!! Tôi vừa thiết kế xong dự án web của mình. Tôi cần toàn bộ quy trình chia sẻ tệp (văn bản, video, âm thanh) lên đám mây để người khác có thể truy cập được. Quy trình và mã để tải lên và tải xuống tệp trên DriveHQ! Cảm ơn


Hồi đáp
15/01/2018 10:32:28 CH

  • DriveHQSupport_
  • (676bài đăng)
Chủ thể: Trả lời: Mã mẫu ứng dụng FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Người dùng: arsene16pcs017  -  15/01/2018 10:32:28 CH

Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

 Chào!! Tôi vừa thiết kế xong dự án web của mình. Tôi cần toàn bộ quy trình chia sẻ tệp (văn bản, video, âm thanh) lên đám mây để người khác có thể truy cập được. Quy trình và mã để tải lên và tải xuống tệp trên DriveHQ! Cảm ơn

Trả lời: Mã mẫu ứng dụng FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Cảm ơn bạn đã liên hệ với chúng tôi. 

Bạn có thể tìm thấy câu trả lời cho mọi câu hỏi cơ bản về chia sẻ/xuất bản trong hướng dẫn sử dụng dịch vụ của chúng tôi: https://www.drivehq.com/ServiceManual.aspx. Nếu bạn có thắc mắc cụ thể, vui lòng gửi email support@drivehq.com và chúng tôi sẽ cố gắng hết sức để hỗ trợ bạn. 

 

Cảm ơn,
Hỗ trợ DriveHQ


 


Hồi đáp
16/01/2018 8:32:57 SA

  • glorber
  • (1bài đăng)
Chủ thể: Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ
Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Tôi đang phát triển một ứng dụng iOS bằng Swift. Ứng dụng này tạo ra một tệp dữ liệu JSON mà tôi muốn tải lên và tải xuống từ ứng dụng lên DriveHQ và ngược lại.

Bạn có thể chia sẻ một đoạn mã Swift mẫu để kết nối với máy chủ FTP của DriveHQ không?

Cảm ơn.


Hồi đáp
22/09/2018 6:59:05 SA

  • stleojohn
  • (1bài đăng)
Chủ thể: Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ
Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

 Tôi gặp lỗi ngoại lệ không xác định khi chạy đoạn mã này, vui lòng giúp tôi


Hồi đáp
26/11/2019 8:42:14 CH

  • DriveHQ Support
  • (32bài đăng)
Chủ thể: Trả lời: Mã mẫu ứng dụng FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Người dùng: stleojohn  -  26/11/2019 8:42:14 CH

Re: Mã mẫu ứng dụng khách FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

 Tôi gặp lỗi ngoại lệ không xác định khi chạy đoạn mã này, vui lòng giúp tôi

Trả lời: Mã mẫu ứng dụng FTP (mã nguồn C#): kết nối đến máy chủ FTP của DriveHQ

Vui lòng đăng đoạn mã và thông báo lỗi của bạn. Đồng thời, hãy kiểm tra trên FileZilla để đảm bảo mạng của bạn không chặn kết nối FTP.


Hồi đáp
26/11/2019 9:32:26 CH

  • liveieee
  • (2bài đăng)
Chủ thể: chương trình client FTP bằng Python
chương trình client FTP bằng Python

Bạn có thể chia sẻ phiên bản Python cho DriveHQ được không


Hồi đáp
31/12/2019 4:28:41 SA

Đánh dấu trang & Chia sẻ
Trả lời nhanh

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003