文件分布式存儲的代碼實現
阿新 • • 發佈:2017-08-06
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 }
文件分布式存儲的代碼實現