首页 > 代码库 > 文件分布式存储的代码实现
文件分布式存储的代码实现
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 }
文件分布式存储的代码实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。