首页 > 代码库 > 文件分布式存储的代码实现

文件分布式存储的代码实现

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 =http://www.mamicode.com/ 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         }

 

文件分布式存储的代码实现