1. 程式人生 > >文件分布式存儲的代碼實現

文件分布式存儲的代碼實現

http model tostring dea ashx 需要 tty 選擇 pos

1.web服務器端

 1   public ActionResult DealFile()
 2         {
 3             HttpPostedFileBase file = Request.Files["imageFile"];
 4             if (file != null)
 5             {
 6                 string fileName = file.FileName;
 7                 string ext = Path.GetExtension(fileName);
 8                 if
(ext == ".jpg") 9 { 10 //選擇服務器 11 MyImageServerEntities dbContext = new MyImageServerEntities(); 12 IList<ImageServerInfo> serverList= dbContext.ImageServerInfo.Where(server => server.FlgUsable == true).ToList(); 13 int
count = serverList.Count; 14 Random random = new Random(); 15 int data = random.Next(); 16 int index = data % count; 17 ImageServerInfo serverInfo = serverList[index]; 18 string serverIP = serverInfo.ServerUrl;
19 string address = "http://" + serverIP + "/FileUp.ashx?serverId=" + serverInfo.ServerId + "&extention=" + ext; 20 WebClient client = new WebClient(); 21 client.UploadData(address ,StreamToByte(file.InputStream)); 22 } 23 else 24 { 25 return Content("文件的格式不對"); 26 } 27 } 28 else 29 { 30 return Content("接收文件失敗"); 31 } 32 return Content("OK"); 33 }

2.圖片服務器端

 1   public void ProcessRequest(HttpContext context)
 2         {
 3             context.Response.ContentType = "text/plain";
 4             // context.Response.Write("Hello World");
 5             string dir = "/Image/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + "/";
 6             string serverId = context.Request["serverId"];
 7             string ext = context.Request["extention"];
 8             string fileName = Guid.NewGuid().ToString();
 9             Directory.CreateDirectory(Path.GetDirectoryName(context.Server.MapPath(dir)));
10             string fullName = context.Server.MapPath(dir) + fileName + ext;
11             using (FileStream fileStream =File.OpenWrite(fullName))
12             {
13                 Stream stream = context.Request.InputStream;
14                 stream.CopyTo(fileStream);
15                 //需要將文件信息寫到數據庫中去,同時可以寫到緩存中(Session)
16                 Model.ImageInfo imageInfo = new Model.ImageInfo();
17                 imageInfo.ImageServerId = int.Parse(serverId);
18                 imageInfo.ImageName = dir + fileName + ext;
19                 Model.MyImageServerEntities dbContext = new Model.MyImageServerEntities();
20                 dbContext.ImageInfo.Add(imageInfo);
21                 dbContext.SaveChanges();
22 
23             }
24 
25         }

文件分布式存儲的代碼實現