zoukankan      html  css  js  c++  java
  • [Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中

    写在前面

    客户有这样的一个需求,针对项目中文档共享的模块,客户提出如果用户上传特别的大,或者时间久了硬盘空间就会吃满,能不能将这些文件上传到其他的服务器?然后就稍微研究了下这方面的东西,上传到网络中的某个共享的文件夹下确实能做到的。

    解决方案

    环境描述:

    若A为web服务器,B为要存放文档的文件服务器。

    如果通过A中的某个页面将文件上传到服务器B,则需要如下三个步骤。

    1、在服务器B上面建立共享文件夹,步骤如下:

     

    编辑贡献文件夹的权限,添加一个用户,并给它开放读写的权限。

    2.共享文件夹建立之后,假如文件服务器B的IP地址为:192.168.83.123,可通过运行访问该文件夹是否共享成功。

     

    3、简单测试,可以使用Uploadify进行上传测试。

    关于uploadify的使用就不再做介绍了

    修改UploadHander.ashx一般处理程序,核心代码如下:

     1   /// <summary>
     2         /// 处理请求的方法
     3         /// </summary>
     4         /// <param name="context">http上下文</param>
     5         public void ProcessRequest(HttpContext context)
     6         {
     7             //获取或设置输出流的HTTP MIME类型
     8             context.Response.ContentType = "text/plain";
     9             //获取上传的文件
    10             HttpPostedFile httpPostedFile = context.Request.Files["Filedata"];
    11             //如果接收到文件则httpPostedFile不为null,则对上传的文件进行处理,否则向客户端返回0
    12             if (httpPostedFile != null)
    13             {
    14 
    15                 //获取文件名
    16                 string strfileName = httpPostedFile.FileName;
    17 
    18                 //获取扩展名
    19                 string strExt = Path.GetExtension(strfileName);
    20 
    21                 //允许上传的文件类型
    22                 string[] strExts = { ".jpg", ".png", ".gif", ".zip", ".rar" };
    23 
    24                 //如果上传的文件类型,在被允许的类型中,则保存,否则向客户端输出“不允许上传”的信息提示。
    25                 if (strExts.Contains(strExt))
    26                 {
    27                     //上传目录
    28                     DirectoryInfo theFolder = new DirectoryInfo(@"\192.168.83.123upload");    
    29                     //定义新的文件名,格式:“201404210323146909_文件名.zip”
    30                     string strNewName = DateTime.Now.ToString("yyyyMMddhhmmssffff") + "_" + strfileName;
    31                     string path = Path.Combine(theFolder.FullName, strNewName);
    32                     //保存文件到文件服务器
    33                     httpPostedFile.SaveAs(path);
    34                     //将文件的保存的相对路径输出到客户端
    35                     context.Response.Write(path);
    36                 }
    37                 else
    38                 {
    39                     context.Response.Write("不允许上传");
    40                 }
    41             }
    42             else
    43             {
    44                 //没有文件,向客户端输出0
    45                 context.Response.Write("0");
    46             }
    47         }

     4、在全局处理程序Global.asax.cs中添加如下代码,应用程序启动时,创建访问文件服务器B的凭证。

    核心代码如下:

    1   protected void Application_Start(object sender, EventArgs e)
    2         {
    3             //System.Diagnostics.Process.Start("net.exe", "use \\B服务器的IP\共享文件夹 "B服务器上的密码" /user:"B服务器上的用户名""), 
    4             System.Diagnostics.Process.Start("net.exe", "use \\192.168.83.123\upload "123456" /user:"xxxdev\dev"");
    5         }

    这就话的意思是,在应用程序已启动的时候,就为访问B服务器提供凭证。

    将网站部署到iis上,如果发现上传不成功,可尝试为共享文件夹添加Everyone,并给与完全控制权限。

    总结

    当时弄这个,确实花了点功夫来配置共享文件夹的权限,也花了不少时间,就想着还是记录一下,希望能帮到你!

  • 相关阅读:
    UVALive 7509 Dome and Steles
    HDU 5884 Sort
    Gym 101194H Great Cells
    HDU 5451 Best Solver
    HDU 5883 The Best Path
    HDU 5875 Function
    卡特兰数
    UVa 11729 Commando War 突击战
    UVa 11292 The Dragon of Loowater 勇者斗恶龙
    Spark Scala Flink版本对应关系
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/4198238.html
Copyright © 2011-2022 走看看