zoukankan      html  css  js  c++  java
  • 文件分布式存储的代码实现

    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         }
  • 相关阅读:
    实现单台测试机6万websocket长连接
    关于ArcGIS10.0中的栅格计算中的函数
    .NET破解之迅捷PDF转换器(续)
    ArcEngine 0x8004023C
    VS2010中重命名项目
    地理数据库本身不能加密
    ArcEngine尝试读取或写入受保护的内存
    利用路由器连接别人家的网络
    ArcGIS的许可文件问题
    MapGIS转Shp文件的单位问题
  • 原文地址:https://www.cnblogs.com/XZhao/p/7295909.html
Copyright © 2011-2022 走看看