以前に紹介した添付ファイル管理モジュール「Winform Development Framework - Universal Attachment Management Module」および「Winform Development Framework - Attachment Management Application」では、添付ファイルの管理機能が導入されており、データベース レコードの処理とファイル管理を通じて実現されます。添付ファイルとレコードの統合管理は、WInform フレームワークのスタンドアロン バージョンまたは分散ハイブリッド開発フレームワークで使用でき、一部の開発シナリオでは FTP 経由でファイルをアップロードする必要があるため、この添付ファイルは管理モジュールは、より実際のプロジェクトのニーズに合わせて拡張されています。
私たちが想定している添付ファイル管理は、WinformやWebなどの開発プロジェクトで最下層を再利用する必要があるため、最下層の設計は対応する処理を考慮する必要があります。 、後で使用することができます。 WInform の HTML 編集コントロールまたは Web の HTML 編集コントロールが統合され、添付ファイルは 1 つのコンポーネントに実装されます。
FTP ファイル アップロードの助けを借りて、スタンドアロン バージョンまたは LAN ベースの Winform インターフェイス プログラムでは、分散ハイブリッド開発フレームワークでファイル共有を実現するための別の FTP サーバーを構築することもできます。サービスのファイル システムは、FTP に基づいて作成され、アップロードすることもできます。
ハイブリッドフレームワークのFTP方式に基づいてファイルをアップロードします。論理的な関係は次のとおりです。
FTP 経由でファイル システムにファイルをアップロードした後、対応する HTTP アドレスを使用してファイルをダウンロードしたり、画像を表示したりできるように、ファイル システムに HTTP サービスを構築します (実装された HTML で実行できます)。エディタ内)。
FTP を使用してアップロードします。私のパブリック クラス ライブラリには使用できる FTPHelper クラスがありますが、比較的完全で強力な FTP オープン ソースを導入することを好みます。関連する処理には、ここでは広く使用されている強力な FTP コンポーネントである FluentFTP コンポーネント (GitHub アドレス: ) を使用します。
FluentFTP は、FTP をサポートする外国人によって開発された .Net に基づく FTP クラス ライブラリであり、FluentFTP は使いやすく、拡張しやすいように設計されたフルマネージド FTP クライアントです。ファイルとディレクトリのリスト、ファイルのアップロードとダウンロード、および SSL/TLS 接続をサポートします。 Unix および Windows IIS に接続して FTP サーバーを確立できます。このプロジェクトは完全にマネージド C# で開発されています。
このコンポーネントの使用法コードは、直感的に理解できるようにここに貼り付けられています。
// create an FTP clientFtpClient client = new FtpClient("123.123.123.123");// if you don't specify login credentials, we use the "anonymous" user accountclient.Credentials = new NetworkCredential("david", "pass123");// begin connecting to the serverclient.Connect();// get a list of files and directories in the "/htdocs" folderforeach (FtpListItem item in client.GetListing("/htdocs")) { // if this is a fileif (item.Type == FtpFileSystemObjectType.File){ // get the file sizelong size = client.GetFileSize(item.FullName); } // get modified date/time of the file or folderDateTime time = client.GetModifiedTime(item.FullName); // calculate a hash for the file on the server side (default algorithm)FtpHash hash = client.GetHash(item.FullName); }// upload a fileclient.UploadFile(@"C:\MyVideo.mp4", "/htdocs/big.txt");// rename the uploaded fileclient.Rename("/htdocs/big.txt", "/htdocs/big2.txt");// download the file againclient.DownloadFile(@"C:\MyVideo_2.mp4", "/htdocs/big2.txt");// delete the fileclient.DeleteFile("/htdocs/big2.txt");// delete a folder recursivelyclient.DeleteDirectory("/htdocs/extras/");// check if a file existsif (client.FileExists("/htdocs/big2.txt")){ }// check if a folder existsif (client.DirectoryExists("/htdocs/extras/")){ }// upload a file and retry 3 times before giving upclient.RetryAttempts = 3; client.UploadFile(@"C:\MyVideo.mp4", "/htdocs/big.txt", FtpExists.Overwrite, false, FtpVerify.Retry);// disconnect! good bye!client.Disconnect();
これを理解すると、通常の Winform プログラムやハイブリッド フレームワーク プログラムでは、FTP 関連情報を設定および指定することでこの情報をコードに読み込み、FTP ログイン、ファイルのアップロード、ダウンロードなどを実行できます。
上記のアイデアとコンポーネントを利用して、元の添付ファイル管理モジュールをアップグレードすることで FTP アップロード モードを実装できます。
まず、便宜上、以下に示すように、FTP サーバー、ユーザー名、パスワード、その他のパラメーターを取得するための構成エンティティ クラスを定義します。
/// <summary>/// FTP配置信息/// </summary> [DataContract] [Serializable]public class FTPInfo {/// <summary>/// 默认构造函数/// </summary>public FTPInfo() { }/// <summary>/// 参数化构造函数/// </summary>/// <param name="server"></param>/// <param name="user"></param>/// <param name="password"></param>public FTPInfo(string server, string user, string password, string baseUrl) {this.Server = server;this.User = user;this.Password = password;this.BaseUrl = baseUrl; }/// <summary>/// FTP服务地址/// </summary> [DataMember]public string Server { get; set; }/// <summary>/// FTP用户名/// </summary> [DataMember]public string User { get; set; }/// <summary>/// FTP密码/// </summary> [DataMember]public string Password { get; set; }/// <summary>/// FTP的基础路径,如可以指定为IIS的路径::8000 ,方便下载打开/// </summary> [DataMember]public string BaseUrl { get; set; } }
以下に示すように、構成ファイル内の関連する FTP パラメーターを抽出するために特に使用される関数を定義します。
/// <summary>/// 获取配置的FTP配置参数/// </summary>/// <returns></returns>private FTPInfo GetFTPConfig() {var ftp_server = config.AppConfigGet("ftp_server");var ftp_user = config.AppConfigGet("ftp_user");var ftp_pass = config.AppConfigGet("ftp_password");var ftp_baseurl = config.AppConfigGet("ftp_baseurl");return new FTPInfo(ftp_server, ftp_user, ftp_pass, ftp_baseurl); }
設定ファイルは以下のようになります。
FluentFTPを使用したコンポーネントコードは以下の通りです。
//使用FluentFTP操作FTP文件FtpClient client = new FtpClient(ftpInfo.Server, ftpInfo.User, ftpInfo.Password);
次に、FTP コンポーネントを呼び出してディレクトリを判断し、そうでない場合は作成します。
//确定日期时间目录(格式:yyyy-MM),不存在则创建string savePath = string.Format("/{0}-{1:D2}/{2}", DateTime.Now.Year, DateTime.Now.Month, category);bool isExistDir = client.DirectoryExists(savePath);if(!isExistDir) { client.CreateDirectory(savePath); }
最後に、コンポーネントを使用してファイルをアップロードします。先ほどの FileUploadInfo エンティティ クラスはバイト配列を格納しているため、FTP コンポーネントを使用してバイト配列を直接アップロードすることもできます。
ファイルをファイルサーバーにアップロードした後は、添付ファイル管理モジュールのデータテーブルに関連情報を保存するだけです。これにより、データベースを使用する際に、その情報を直接使用することができます。画像を表示するか、ファイルをダウンロードする必要がある場合は、関連する HTTP アドレスを結合するだけです。以下に示すように、対応するデータベース レコードのスクリーンショットを見てみましょう。
この基本情報を使用して、以前紹介した Winform HTML 編集コントロール ZetaHtmlEditControl (HTML 編集コントロール Zeta HTML Edit Control を Winform で共有、ソース コード付きで中国語版) を変換することもできます。すべての英語のメニュー、ツールバー、ダイアログ ボックス、プロンプト コンテンツ、およびコントロールのその他のリソースが中国語に翻訳され、画像の挿入と印刷の機能がツールバーに追加された後のインターフェイスは次のようになります。
デフォルトでは、画像を追加する方法は間違いなくローカル ファイルに基づいていますが、FTP を使用してファイルをアップロードするように変更した後は、コントロール上で HTTP アドレスを取得し、操作の画像ファイルをプレビューできます。
この方法で構築された画像アドレスは標準の URL アドレスであり、次のインターフェイスに示すように、さまざまな場所で表示できます。
これは、FTP アップロード モードで既に完成した添付ファイル管理モジュールを統合し、オンライン HTML 編集機能を実現します。このような HTML コンテンツは、HTML エディターでの表示にも適しています。ウェブインターフェース。
上記は、WInform 開発フレームワーク全体のために私が構築したプロジェクト コンポーネントであり、FTP アップロード メソッドを追加し、ZetaHtmlEditControl コントロールにオンライン HTML を編集する機能を実装しました。あなた。
以上が添付ファイル管理モジュールで FTP アップロードとプレビューのサポートを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。