.net 跨服务器上传共享文件
原文地址:https://blog.csdn.net/yhyhyhy/article/details/66970654
亲测可用,感谢原文作者,解决跨服务器上传问题,记录下。
如果通过A中的某个页面将文件上传到服务器B,则需要如下三个步骤。
1、在服务器B上面建立共享文件夹,步骤如下:



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


2.共享文件夹建立之后,假如文件服务器B的IP地址为:192.168.83.123,可通过运行访问该文件夹是否共享成功。
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.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 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服务器提供凭证。
总结
当时弄这个,确实花了点功夫来配置共享文件夹的权限,也花了不少时间,就想着还是记录一下,希望能帮到你!
补充:由于我的共享是在Win7服务器,.net发布在xp服务器,在运行时总是提示:异常详细信息: System.IO.IOException: 登录失败: 未知的用户名或错误密码。
无法上传文件,最好发现是win的安全设置不对,按下面的设置后可以正常上传。
启用guest用户,一般win7是关闭guest用户状态。右键【我的电脑】--【管理】,弹出【计算机管理】窗口,选择【本地用户和组】,双击【guest】将【账户已禁用】去掉勾,应用确定。若需要密码,可以右键【guest】--【设置密码】即可。


最后要设置共享文件夹权限,这里是everyone 的读写权限,文件夹安全属性要可编辑


浙公网安备 33010602011771号