In den zuvor eingeführten Anhangsverwaltungsmodulen „Winform Development Framework – Universelles Anhangsverwaltungsmodul“ und „Winform Development Framework – Anhangsverwaltungsanwendung“ werden die Verwaltungsfunktionen von Anhängen durch die Verarbeitung von Datenbankdatensätzen und die Dateiverwaltung eingeführt. Es realisiert die integrierte Verwaltung von Anhangsdateien und -datensätzen, die in der eigenständigen Version des WInform-Frameworks oder im verteilten Hybrid-Entwicklungsframework verwendet werden können. Bei der Anreicherung einiger Entwicklungsszenarien müssen wir Dateien über FTP hochladen für Dieses Anhangverwaltungsmodul wurde erweitert, um den praktischeren Projektanforderungen gerecht zu werden.
Die unterste Ebene der Anhangsverwaltung, die wir uns vorstellen, muss in Winform, Web und anderen Entwicklungsprojekten wiederverwendet werden, daher ist das Design der untersten Ebene erforderlich Zu berücksichtigende Verarbeitungen können später mithilfe der HTML-Bearbeitungssteuerung von WInform oder der HTML-Bearbeitungssteuerung von Web integriert werden. Anhänge werden vereinheitlicht und in einer Komponente implementiert.
Mit Hilfe des FTP-Datei-Uploads kann unsere eigenständige Version oder das LAN-basierte Winform-Schnittstellenprogramm auch einen separaten FTP-Server erstellen, um die Dateifreigabe im verteilten Hybrid-Entwicklungsframework zu erreichen. Sie können das dienstbasierte Dateisystemschreiben wählen und auch das Hochladen auf FTP-Basis durchführen.
Dateien basierend auf der FTP-Methode des Hybrid-Frameworks hochladen. Die logische Beziehung ist wie folgt.
Nachdem die Datei über FTP in das Dateisystem hochgeladen wurde, erstellen wir einen HTTP-Dienst im Dateisystem, sodass die entsprechende HTTP-Adresse zum Herunterladen der Datei verwendet werden kann , und Bilder anzeigen und andere Vorgänge (können im HTML-Editor implementiert werden).
Verwenden von FTP zum Hochladen, obwohl es in Ihrer eigenen öffentlichen Klassenbibliothek eine FTPHelper-Klasse gibt, die verwendet werden kann, aber Relativ gesehen bin ich eher bereit, umfassendere und leistungsfähigere FTP-Open-Source-Komponenten für die entsprechende Verarbeitung einzuführen. Hier verwenden wir die FluentFTP-Komponente (GitHub-Adresse:), eine weit verbreitete und leistungsstarke FTP-Komponente.
FluentFTP ist eine von Ausländern entwickelte FTP-Klassenbibliothek, die FTP und FTPS unterstützt. FluentFTP ist ein vollständig verwalteter FTP-Client, der einfach zu verwenden und zu erweitern ist. Es unterstützt das Auflisten von Dateien und Verzeichnissen, das Hoch- und Herunterladen von Dateien sowie SSL/TLS-Verbindungen. Es kann eine Verbindung zu Unix und Windows IIS herstellen, um FTP-Server einzurichten. Dieses Projekt wurde vollständig in verwaltetem C# entwickelt.
Fügen Sie hier den Verwendungscode dieser Komponente ein, damit Sie sie intuitiv verstehen können.
// 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();
Mit diesem Verständnis können wir in gewöhnlichen Winform-Programmen oder Hybrid-Framework-Programmen diese in den Code laden, indem wir FTP-bezogene Informationen über Konfigurationsinformationen angeben, eine FTP-Anmeldung durchführen und Dateien hochladen , Download und andere Vorgänge.
Mit Hilfe der oben genannten Ideen und Komponenten können wir FTP implementieren, indem wir relevante Upgrades am ursprünglichen Anhangsverwaltungsmodul Upload durchführen Modus behandelt wird.
Der Einfachheit halber definieren wir zunächst eine Konfigurationsentitätsklasse, um den FTP-Server, den Benutzernamen, das Passwort und andere Parameter zu erhalten, wie unten gezeigt.
/// <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; } }
Definieren Sie eine Funktion, die speziell zum Extrahieren der relevanten FTP-Parameter in der Konfigurationsdatei verwendet wird, wie unten gezeigt.
/// <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); }
wobei unsere Konfigurationsdatei wie unten gezeigt ist.
Der Komponentencode, der FluentFTP verwendet, lautet wie folgt.
//使用FluentFTP操作FTP文件FtpClient client = new FtpClient(ftpInfo.Server, ftpInfo.User, ftpInfo.Password);
Dann rufen Sie die FTP-Komponente auf, um das Verzeichnis zu beurteilen. Wenn nicht, erstellen Sie einfach eines.
//确定日期时间目录(格式: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); }
Verwenden Sie abschließend die Komponente, um die Datei hier hochzuladen. Da das Byte-Array in der vorherigen FileUploadInfo-Entitätsklasse gespeichert ist, wird auch die FTP-Komponente verwendet Laden Sie das Byte-Array direkt hoch.
//使用FTP上传文件//避免文件重复,使用GUID命名var ext = FileUtil.GetExtension(info.FileName);var newFileName = string.Format("{0}{1}", Guid.NewGuid().ToString(), ext);//FileUtil.GetFileName(file);savePath = savePath.UriCombine(newFileName);bool uploaded = client.Upload(info.FileData, savePath, FtpExists.Overwrite, true);
Nachdem die Datei auf den Dateiserver hochgeladen wurde, müssen nur noch die relevanten Informationen in der Datentabelle des Anhangverwaltungsmoduls gespeichert werden. Auf diese Weise können Sie die Informationen in der Datenbank direkt verwenden, wenn Sie sie verwenden. Wenn Sie Bilder anzeigen müssen oder die Datei heruntergeladen haben, fügen Sie einfach die entsprechenden HTTP-Adressen hinzu. Sehen Sie sich den Screenshot des entsprechenden Datenbankeintrags an, wie unten gezeigt.
Mit diesen grundlegenden Informationen können wir auch das zuvor eingeführte Winform-HTML-Bearbeitungssteuerelement umwandeln: ZetaHtmlEditControl (teilen Sie ein HTML-Bearbeitungssteuerelement Zeta HTML Edit in Winform Control (chinesische Version mit Quellcode), ich habe alle englischen Menüs, Symbolleisten, Dialogfelder, Eingabeaufforderungsinhalte und anderen Ressourcen dieses Steuerelements ins Chinesische übersetzt und die Funktionen zum Einfügen von Bildern und Drucken in die Symbolleiste hinzugefügt. Die Benutzeroberfläche sieht wie folgt aus.
Standardmäßig basiert die Art und Weise, wie wir Bilder hinzufügen, definitiv auf lokalen Dateien. Nachdem wir es jedoch geändert haben, um FTP zum Hochladen von Dateien zu verwenden, haben wir HTTP für die Steueradresse erhalten. Sie können die Bilddatei in der Vorschau anzeigen und anzeigen.
Die mit dieser Methode erstellte Bildadresse ist eine Standard-URL-Adresse und kann an verschiedenen Orten angezeigt werden, wie in der folgenden Benutzeroberfläche gezeigt.
Dies ist das ZetaHtmlEditControl-Steuerelement. Es integriert das Anhangsverwaltungsmodul, das wir zuvor im FTP-Upload-Modus implementiert haben, um die Funktion zum Bearbeiten von Online-HTML-Inhalten zu realisieren geeignet sein für Es wird im HTML-Editor unter der Weboberfläche angezeigt.
Die oben genannten Projektkomponenten habe ich für das gesamte WInform-Entwicklungsframework erstellt. Ich habe die Funktion zum Bearbeiten von Online-HTML im ZetaHtmlEditControl-Steuerelement implementiert Entwicklungsideen werden für Sie von Nutzen sein.
Das obige ist der detaillierte Inhalt vonWie füge ich Unterstützung für FTP-Upload und -Vorschau im Anhangsverwaltungsmodul hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!