博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中
阅读量:6094 次
发布时间:2019-06-20

本文共 2730 字,大约阅读时间需要 9 分钟。

写在前面

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

解决方案

环境描述:

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

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

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

 

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

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

 

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

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

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

1   ///  2         /// 处理请求的方法 3         ///  4         /// http上下文 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,则对上传的文件进行处理,否则向客户端返回012             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.123\upload\");    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                 else38                 {39                     context.Response.Write("不允许上传");40                 }41             }42             else43             {44                 //没有文件,向客户端输出045                 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,并给与完全控制权限。

总结

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

转载于:https://www.cnblogs.com/wolf-sun/p/4198238.html

你可能感兴趣的文章
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>
Ext Js简单事件处理和对象作用域
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
12.通过微信小程序端访问企查查(采集工商信息)
查看>>
WinXp 开机登录密码
查看>>
POJ 1001 Exponentiation
查看>>
HDU 4377 Sub Sequence[串构造]
查看>>
云时代架构阅读笔记之四
查看>>
WEB请求处理一:浏览器请求发起处理
查看>>
Lua学习笔记(8): 元表
查看>>
PHP经典算法题
查看>>
LeetCode 404 Sum of Left Leaves
查看>>
醋泡大蒜有什么功效
查看>>
hdu 5115(2014北京—dp)
查看>>
数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)...
查看>>
PHP读取日志里数据方法理解
查看>>
第五十七篇、AVAssetReader和AVAssetWrite 对视频进行编码
查看>>