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

摘要:
1.Web服务器端1PublicActionResultDealFile()2{3HttpPostedFileBasefile=Request.Files[“imageFile”];4if(file!=null)5{6stringfileName=file.FileName;7stringxt=Path.GetExtension(FileName);8if(ext=“.jpg”)9{10/

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         }

免责声明:文章转载自《文件分布式存储的代码实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WebService 的简单使用Redis的简单了解以及主从复制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

httpModules与httpHandlers之httpModules(转载)

WapModule.cs:public class WapModule:IHttpModule{public void Init(HttpApplication context){context.BeginRequest += new EventHandler(context_BeginRequest);}// 处理BeginRequest 事件的实际代码v...

Android-UIUtils-工具类

UIUtils工具类,主要是处理和Activity有关,和界面显示层有关的公共方法: packagecommon.library.utils; importandroid.app.Activity; importandroid.content.Context; importandroid.content.Intent; importandroid.te...

工具类总结---(七)---之通用工具

这里所谓的通用工具,就是表示经常会用到的方法,比如说判断网络的状态,判断sd是否存在,弹出toast等等。 packagecgjr.com.cgjr.utils; importandroid.content.Context; importandroid.net.ConnectivityManager; importandroid.net.Networ...

Spring中ApplicationContextAware的作用

通过ApplicationContextAware,Spring容器会自动调用上下文环境对象ApplicationContextAware接口中的setApplicationContext方法,从而获得容器中的指定Bean。 自定义一个ApplicationContextAware的实现类,就可以通过这个上下文环境对象得到Spring容器中的Bean。 看到...

asp.net identity的学习记录

# identity数据库 ## 创建空数据库 交给ef管理 ### 添加asp.net identity包 ``` Install-Package Microsoft.AspNet.Identity.EntityFramework Install-Package Microsoft.AspNet.Identity.OWIN Install-Package...

canvas中的rotate的使用方法

今天在绘制一个足球滚动的时候,想使用rotate方法,之前看到这个方法的时候,并没有引起任何重视,无非就是和CSS3里的rotate一样的用么... 遗憾的是,事实并非如此,由于代码在公司,我也就不去找那些图片资源了,直接用一个黑色方块代替 代码如下: var oCan = document.getElementById("canvas"); var ct...