앞서 소개한 첨부파일 관리 모듈 중 "Winform Development Framework의 Universal Attachment Management Module"과 "Winform Development Framework의 Attachment Management Application"에서는 데이터베이스 기록 처리와 파일 관리를 통해 구현되는 첨부파일 관리 기능을 소개합니다. 일부 개발 시나리오가 강화되면서 FTP를 통해 파일을 업로드해야 하므로 이 첨부 파일 관리 모듈이 확장되었습니다. 보다 실제적인 프로젝트 요구에 맞게.
우리가 구상하는 첨부 파일 관리, 하단 레이어는 Winform, 웹 및 기타 개발 프로젝트에서 재사용되어야 하므로 하단 레이어의 디자인은 해당 처리를 고려해야 합니다. , 나중에 사용할 수 있습니다. WInform의 HTML 편집 컨트롤이나 Web의 HTML 편집 컨트롤이 통합되어 있으며 첨부 파일이 하나의 컴포넌트에 구현되어 있습니다.
FTP 파일 업로드의 도움으로 독립 실행형 버전 또는 LAN 기반 Winform 인터페이스 프로그램은 분산 하이브리드 개발 프레임워크에서 파일 공유를 달성하기 위해 별도의 FTP 서버를 구축할 수도 있습니다. 파일 업로드를 위해 다음을 선택할 수 있습니다. 업로드 파일 기반 서비스의 파일 시스템이 작성되어 있으며 FTP 기반으로 업로드할 수도 있습니다.
하이브리드 프레임워크의 FTP 방식을 기반으로 파일을 업로드하면 다음과 같은 논리적 관계가 있습니다.
FTP를 통해 파일 시스템에 파일을 업로드한 후 파일 시스템에 HTTP 서비스를 구축하여 해당 HTTP 주소를 사용하여 파일 다운로드, 사진 보기 등을 수행할 수 있습니다. (HTML 구현으로 수행 가능) 편집기에서).
FTP를 사용하여 업로드할 수 있는 공개 클래스 라이브러리에 FTPHelper 클래스가 있지만 상대적으로 더 완전하고 강력한 FTP 오픈 소스를 소개하는 것을 선호합니다. 관련 처리를 위해 여기에서는 널리 사용되고 강력한 FTP 구성 요소인 FluentFTP 구성 요소(GitHub 주소: )를 사용합니다.
FluentFTP는 FTP 및 FTPS를 지원하는 외국인이 개발한 .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(Winform의 HTML 편집 컨트롤 Zeta HTML 편집 컨트롤 공유, 소스 코드가 있는 중국어 버전), I aminterest to this After 컨트롤의 모든 영어 메뉴, 도구 모음, 대화 상자, 프롬프트 내용 및 기타 리소스가 중국어로 번역되었으며 도구 모음에 그림 삽입 및 인쇄 기능이 추가된 후 인터페이스는 다음과 같습니다.
기본적으로 이미지를 추가하는 방식은 확실히 로컬 파일을 기반으로 하지만 FTP를 사용하여 파일을 업로드하도록 수정한 후에는 컨트롤에서 HTTP 주소를 얻고 작업의 이미지 파일을 미리 볼 수 있습니다.
이 방법으로 생성된 이미지 주소는 표준 URL 주소이며 다음 인터페이스와 같이 다양한 위치에서 볼 수 있습니다.
이것은 ZetaHtmlEditControl 컨트롤로, FTP 업로드 모드에서 이미 완료한 첨부 파일 관리 모듈을 통합하여 온라인 HTML 편집 기능을 구현합니다. 이러한 HTML 콘텐츠는 HTML 편집기에 표시하는 데에도 적합합니다. 웹 인터페이스.
위는 전체 WInform 개발 프레임워크에 대해 구성한 프로젝트 구성 요소입니다. FTP 업로드 방법을 추가하고 해당 장면 요구 사항을 개선했으며 ZetaHtmlEditControl 컨트롤에서 온라인 HTML 편집 기능을 구현했습니다. 너.
위 내용은 첨부 파일 관리 모듈에서 FTP 업로드 및 미리보기에 대한 지원을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!