日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net .Net Core 下使用FastDFS 文件上传下载

發布時間:2023/12/10 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net .Net Core 下使用FastDFS 文件上传下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引入FastDFS.Client.bll

下載地址:https://pan.baidu.com/s/1-6HcXf8xP3XR883IGflFiw

添加?FastDFSHelper類,代碼如下:

/// <summary>/// 負責人: QFN/// 時 間: 2018-10-15 15:28:37/// 功 能: FastDFS 文件上傳下載/// 描 敘: /// </summary>public class FastDFSHelper{private List<IPEndPoint> trackerIPs = new List<IPEndPoint>();private IPEndPoint endPoint;private StorageNode storageNode;private string groupName = ConfigurationManager.AppSettings["fastdfs_groupname"];/// <summary>/// 鏈接 FASTDFS/// </summary>public FastDFSHelper(){string[] trackers = ConfigurationManager.AppSettings["fastdfs_trackers"].Split(new char[','], StringSplitOptions.RemoveEmptyEntries);string[] storages = ConfigurationManager.AppSettings["fastdfs_storages"].Split(new char[','], StringSplitOptions.RemoveEmptyEntries);int port = int.Parse(ConfigurationManager.AppSettings["fastdfs_port"]);foreach (var onetracker in trackers){trackerIPs.Add(new IPEndPoint(IPAddress.Parse(onetracker), port));}ConnectionManager.Initialize(trackerIPs);storageNode = FastDFSClient.GetStorageNode(groupName);}/// <summary>/// 上傳文件/// </summary>/// <param name="fileStream">文件流</param>/// <param name="prefixName">從文件前綴名稱</param>/// <param name="slaveFileName">返回從文件路徑</param>/// <returns>返回主文件路徑</returns>public string UploadFile(Stream fileStream, string prefixName, string fileExt, out string slaveFileName){byte[] content = new byte[fileStream.Length];using (BinaryReader reader = new BinaryReader(fileStream)){content = reader.ReadBytes((int)fileStream.Length);}//主文件string fileName = FastDFSClient.UploadFile(storageNode, content, fileExt);var info = FastDFSClient.GetFileInfo(storageNode, fileName);//從文件slaveFileName = FastDFSClient.UploadSlaveFile(groupName, content, fileName, prefixName, fileExt);var slaveInfo = FastDFSClient.GetFileInfo(storageNode, slaveFileName);return fileName;}/// <summary>/// 下載文件/// </summary>/// <param name="fileName">文件路徑</param>/// <param name=""></param>/// <returns>文件流</returns>public FileStream DownloadFile(string fileName){FDFSFileInfo fileInfo = FastDFSClient.GetFileInfo(storageNode, fileName);FileStream fileStream = new FileStream(Path.GetTempFileName(), FileMode.Create);if (fileInfo.FileSize >= 1024)//如果文件大小大于1KB 分次寫入{long offset = 0;long len = 1024;while (len > 0){byte[] buffer = new byte[len];buffer = FastDFSClient.DownloadFile(storageNode, fileName, offset, len);fileStream.Write(buffer, 0, int.Parse(len.ToString()));fileStream.Flush();offset = offset + len;len = (fileInfo.FileSize - offset) >= 1024 ? 1024 : (fileInfo.FileSize - offset);}return fileStream;}else//如果文件大小小小于1KB 直接寫入文件{byte[] buffer = new byte[fileInfo.FileSize];buffer = FastDFSClient.DownloadFile(storageNode, fileName);//FileStream fileStream = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write);fileStream.Write(buffer, 0, buffer.Length);fileStream.Flush();fileStream.Close();return fileStream;}}/// <summary>/// 下載文件/// </summary>/// <param name="fileName">文件路徑</param>/// <param name=""></param>/// <returns>文件流</returns>public byte[] DownloadFileByte(string fileName){FDFSFileInfo fileInfo = FastDFSClient.GetFileInfo(storageNode, fileName);byte[] buffer = new byte[fileInfo.FileSize];buffer = FastDFSClient.DownloadFile(storageNode, fileName);FileStream fs = new FileStream("D://down123.png", FileMode.Create, FileAccess.Write);fs.Write(buffer, 0, buffer.Length);fs.Flush();fs.Close();return buffer;}/// <summary>/// 下載文件 流模式/// </summary>/// <param name="fileName">文件路徑</param>/// <param name=""></param>/// <returns>文件流</returns>public Stream DownloadFileStream(string fileName){FDFSFileInfo fileInfo = FastDFSClient.GetFileInfo(storageNode, fileName);Stream stream = new MemoryStream();if (fileInfo.FileSize >= 1024)//如果文件大小大于1KB 分次寫入{long offset = 0;long len = 1024;while (len > 0){byte[] buffer = new byte[len];buffer = FastDFSClient.DownloadFile(storageNode, fileName, offset, len);stream.Write(buffer, 0, int.Parse(len.ToString()));stream.Flush();offset = offset + len;len = (fileInfo.FileSize - offset) >= 1024 ? 1024 : (fileInfo.FileSize - offset);}}else//如果文件大小小小于1KB 直接寫入文件{byte[] buffer = new byte[fileInfo.FileSize];buffer = FastDFSClient.DownloadFile(storageNode, fileName);//FileStream fileStream = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write);stream.Write(buffer, 0, buffer.Length);stream.Flush();}stream.Seek(0, SeekOrigin.Begin);return stream;}public void UploadFile(Stream fileStream, string fileName){try{byte[] buffer = new byte[fileStream.Length];FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);int count = 0;while ((count = fileStream.Read(buffer, 0, buffer.Length)) > 0){fs.Write(buffer, 0, count);}//清空緩沖區fs.Flush();//關閉流fs.Close();}catch (Exception e){}}/// <summary>/// 根據文件名稱獲取文件瀏覽路徑/// </summary>/// <param name="fileName"></param>/// <returns></returns>public string GetFilePath(string fileName){string trackers = ConfigurationManager.AppSettings["fastdfs_storages"];string groupname = ConfigurationManager.AppSettings["fastdfs_groupname"];return trackers + "/" + groupname + "/" + fileName;}}

其中?ConfigurationManager.AppSettings 為獲取配置文件中的配置信息,這里有多種下載方式。

配置文件如下:

<!-- FastDFS Start --><add key="fastdfs_trackers" value="192.168.1.56" /><add key="fastdfs_storages" value="192.168.1.56" /><add key="fastdfs_port" value="22122" /><add key="fastdfs_groupname" value="group1" /><add key="fastdfs_maxsize" value="10000000" /><add key="fastdfs_type" value="gif,jpg,jpeg,png,bmp,zip,rar,layout" /><add key="fastdfs_type_file" value="txt,xlsx,zip,rar" /><!-- FastDFS End -->

?

總結

以上是生活随笔為你收集整理的.Net .Net Core 下使用FastDFS 文件上传下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。