[Asp.net]通过uploadify将文件上传到B服务器的共享文件夹中
2015-12-10 12:02
645 查看
写在前面
客户有这样的一个需求,针对项目中文档共享的模块,客户提出如果用户上传特别的大,或者时间久了硬盘空间就会吃满,能不能将这些文件上传到其他的服务器?然后就稍微研究了下这方面的东西,上传到网络中的某个共享的文件夹下确实能做到的。解决方案
环境描述:若A为web服务器,B为要存放文档的文件服务器。
如果通过A中的某个页面将文件上传到服务器B,则需要如下三个步骤。
1、在服务器B上面建立共享文件夹,步骤如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/4e29b4542b3bf0c3826d7a76120319fd.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/48d57edd73bf1df41e946de1c33d1adc.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/872503797d5876526beea32735d32d88.png)
编辑贡献文件夹的权限,添加一个用户,并给它开放读写的权限。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/a6b71925923b86cbb22cca5611766c7d.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/0f93d562df6e363ca40ca1c864c5a947.png)
2.共享文件夹建立之后,假如文件服务器B的IP地址为:192.168.83.123,可通过运行访问该文件夹是否共享成功。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/03/d3a836e751a1e22a50a4b144a2f6239a.png)
3、简单测试,可以使用Uploadify进行上传测试。
关于uploadify的使用就不再做介绍了
修改UploadHander.ashx一般处理程序,核心代码如下:
/// <summary> /// 处理请求的方法 /// </summary> /// <param name="context">http上下文</param> public void ProcessRequest(HttpContext context) { //获取或设置输出流的HTTP MIME类型 context.Response.ContentType = "text/plain"; //获取上传的文件 HttpPostedFile httpPostedFile = context.Request.Files["Filedata"]; //如果接收到文件则httpPostedFile不为null,则对上传的文件进行处理,否则向客户端返回0 if (httpPostedFile != null) { //获取文件名 string strfileName = httpPostedFile.FileName; //获取扩展名 string strExt = Path.GetExtension(strfileName); //允许上传的文件类型 string[] strExts = { ".jpg", ".png", ".gif", ".zip", ".rar" }; //如果上传的文件类型,在被允许的类型中,则保存,否则向客户端输出“不允许上传”的信息提示。 if (strExts.Contains(strExt)) { //上传目录 DirectoryInfo theFolder = new DirectoryInfo(@"\\192.168.83.123\upload\"); //定义新的文件名,格式:“201404210323146909_文件名.zip” string strNewName = DateTime.Now.ToString("yyyyMMddhhmmssffff") + "_" + strfileName; string path = Path.Combine(theFolder.FullName, strNewName); //保存文件到文件服务器 httpPostedFile.SaveAs(path); //将文件的保存的相对路径输出到客户端 context.Response.Write(path); } else { context.Response.Write("不允许上传"); } } else { //没有文件,向客户端输出0 context.Response.Write("0"); } }
4、在全局处理程序Global.asax.cs中添加如下代码,应用程序启动时,创建访问文件服务器B的凭证。
核心代码如下:
protected void Application_Start(object sender, EventArgs e) { //System.Diagnostics.Process.Start("net.exe", "use \\\\B服务器的IP\\共享文件夹 \"B服务器上的密码\" /user:\"B服务器上的用户名\""), System.Diagnostics.Process.Start("net.exe", "use \\\\192.168.83.123\\upload \"123456\" /user:\"xxxdev\\dev\""); }
这就话的意思是,在应用程序已启动的时候,就为访问B服务器提供凭证。
将网站部署到iis上,如果发现上传不成功,可尝试为共享文件夹添加Everyone,并给与完全控制权限。
总结
文件共享也可参照:/article/5300213.html原文:http://www.cnblogs.com/wolf-sun/p/4198238.html
相关文章推荐
- ASP.NET Web API自身对CORS的支持
- ASP.NET MVC5 Filter重定向问题
- Spring源码阅读4.1-Aspecjt AOP之获取Adivsor
- Aspose.word保存PDF时进行授权访问设置
- 理解SVG的viewport,viewBox,preserveAspectRatio
- ASP.NET Session 简单超实用使用总结
- ASP.NET Boilerplate
- asp.net接收发送的xml字符串数据
- ASP.NET Core 1.0 中的依赖项管理
- ASP.NET中字段赋值问题
- ASP.NET 问题集锦
- ASP.NET MVC 监控诊断、本地化和缓存
- asp.net列表分页
- @AspectJ使用示例
- ASP.NET MVC
- ASP.NET发送电子邮件
- ASP.net MVC自定义错误处理页面的方法
- ASP.NET MVC 发送邮件(异步)
- ASP.NET中实体数据库模型的增删改查的用法。
- asp.net关于post和get传值的问题