如何把文件上传到另外一台服务器1
2015-09-08 09:56
696 查看
摘要如下:
简单的测试虚拟目录设置是否正确!
假设A是你web站点的服务器 B是你要上传文件的服务器
1、在B服务器上共享一个文件夹upload,并设置好权限 开设用户test 密码123456 并给予test对upload的写入权限,同时在该文件夹里放入一个简单的页面,随便什么都行,输出几个字母就可以了【B服务器上的操作over】
2、在A服务器web站点下面建立一个虚拟目录,默认加虚拟目录的时候是没得选择其他服务器的共享文件夹的,你先随便选择一个本地的路径,建立好之后,点击该虚拟目录的属性,在更改本地路径的上面,有3个选择,你选择“另一台计算机上的共享”,接着设置网络路径,格式是这样的:\\{服务器}\{共享名},{服务器}用IP来代替,{共享名}就是那个upload文件夹,填好之后点击后面的“连接用户”,输入刚才在B服务器上用户test 和密码123456(当然,简单一点,你最好先测试一下,确定A服务器能访问B服务器共享的文件夹,如果A都不能访问B的共享,那你先解决这个问题先,测试的方法很简单,在浏览器里输入\\B服务器的IP\upload,如果能输入用户和密码之后能看到你刚才随便建的那个文件,OK,共享是可以访问的)
3、虚拟目录设置好了之后,你可以测试一下,在A的web站点下面通过程序获取一下虚拟目录的路径,如果是成功的,路径应该是服务器B的IP+upload文件夹。
4、接下来的工作就是上传文件了,这个时候你直接上传应该都是可以的,应该你刚才已经输入过访问B服务器upload的帐号和密码,也就是说A和B已经建立了信任连接,不过如果你重启服务器,刚才建立的连接也就不存在了。所以在A服务器web站点的Global.asax文件里加载一句话,让A服务器站点启动的时候就和B建立信任连接
System.Diagnostics.Process.Start("net.exe", "use \\\\B服务器的IP\\upload \"123456\" /user:\"test\"");
上面的语句就是建立信任连接的,放在global.asax的好处就是站点启动就建立连接,因为这种信任连接是可持续性的,不会象session一样过期,只有在重启A服务器的时候这种信任连接才会消失。
不晓得你明白没有?不过我可以肯定,这个是可以实现的,因为我刚刚做过这块。
后话:至于上传到B服务器上的文件怎么访问,那就比较方便了。
一种方式:还是通过A服务器web站点下面的虚拟目录来访问,这种情况下,B服务器只是提供空间
另一种方式:在B服务器上建立一个站点,指向该目录,这样B服务器分担了访问文件时IIS的工作任务
文件上传保存:
SaveAs(Server.MapPath("abc") + "\\" + filePath.Substring(filePath.LastIndexOf("\\") + 1));
//abc为程序运行站点或者虚拟目录下的虚拟目录
文件浏览:
DownloadFile(Server.MapPath("abc") + "//abc.txt");
//abc.txt为B服务器上的文件
private void DownloadFile(string physicalFilePath)
{
FileStream stream = null;
try
{
stream = new FileStream(physicalFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
int bufSize = (int)stream.Length;
byte[] buf = new byte[bufSize];
int bytesRead = stream.Read(buf, 0, bufSize);
HttpContext.Current.Response.ContentType = "application/octet-stream";
//attachment是以附件的形式下载,也可以改为online在线找开.
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(System.IO.Path.GetFileName(physicalFilePath), System.Text.Encoding.UTF8));
HttpContext.Current.Response.OutputStream.Write(buf, 0, bytesRead);
HttpContext.Current.Response.End();
}
finally
{
stream.Close();
}
}
简单的测试虚拟目录设置是否正确!
假设A是你web站点的服务器 B是你要上传文件的服务器
1、在B服务器上共享一个文件夹upload,并设置好权限 开设用户test 密码123456 并给予test对upload的写入权限,同时在该文件夹里放入一个简单的页面,随便什么都行,输出几个字母就可以了【B服务器上的操作over】
2、在A服务器web站点下面建立一个虚拟目录,默认加虚拟目录的时候是没得选择其他服务器的共享文件夹的,你先随便选择一个本地的路径,建立好之后,点击该虚拟目录的属性,在更改本地路径的上面,有3个选择,你选择“另一台计算机上的共享”,接着设置网络路径,格式是这样的:\\{服务器}\{共享名},{服务器}用IP来代替,{共享名}就是那个upload文件夹,填好之后点击后面的“连接用户”,输入刚才在B服务器上用户test 和密码123456(当然,简单一点,你最好先测试一下,确定A服务器能访问B服务器共享的文件夹,如果A都不能访问B的共享,那你先解决这个问题先,测试的方法很简单,在浏览器里输入\\B服务器的IP\upload,如果能输入用户和密码之后能看到你刚才随便建的那个文件,OK,共享是可以访问的)
3、虚拟目录设置好了之后,你可以测试一下,在A的web站点下面通过程序获取一下虚拟目录的路径,如果是成功的,路径应该是服务器B的IP+upload文件夹。
4、接下来的工作就是上传文件了,这个时候你直接上传应该都是可以的,应该你刚才已经输入过访问B服务器upload的帐号和密码,也就是说A和B已经建立了信任连接,不过如果你重启服务器,刚才建立的连接也就不存在了。所以在A服务器web站点的Global.asax文件里加载一句话,让A服务器站点启动的时候就和B建立信任连接
System.Diagnostics.Process.Start("net.exe", "use \\\\B服务器的IP\\upload \"123456\" /user:\"test\"");
上面的语句就是建立信任连接的,放在global.asax的好处就是站点启动就建立连接,因为这种信任连接是可持续性的,不会象session一样过期,只有在重启A服务器的时候这种信任连接才会消失。
不晓得你明白没有?不过我可以肯定,这个是可以实现的,因为我刚刚做过这块。
后话:至于上传到B服务器上的文件怎么访问,那就比较方便了。
一种方式:还是通过A服务器web站点下面的虚拟目录来访问,这种情况下,B服务器只是提供空间
另一种方式:在B服务器上建立一个站点,指向该目录,这样B服务器分担了访问文件时IIS的工作任务
文件上传保存:
SaveAs(Server.MapPath("abc") + "\\" + filePath.Substring(filePath.LastIndexOf("\\") + 1));
//abc为程序运行站点或者虚拟目录下的虚拟目录
文件浏览:
DownloadFile(Server.MapPath("abc") + "//abc.txt");
//abc.txt为B服务器上的文件
private void DownloadFile(string physicalFilePath)
{
FileStream stream = null;
try
{
stream = new FileStream(physicalFilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
int bufSize = (int)stream.Length;
byte[] buf = new byte[bufSize];
int bytesRead = stream.Read(buf, 0, bufSize);
HttpContext.Current.Response.ContentType = "application/octet-stream";
//attachment是以附件的形式下载,也可以改为online在线找开.
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(System.IO.Path.GetFileName(physicalFilePath), System.Text.Encoding.UTF8));
HttpContext.Current.Response.OutputStream.Write(buf, 0, bytesRead);
HttpContext.Current.Response.End();
}
finally
{
stream.Close();
}
}
相关文章推荐
- 机器学习
- Java调用ICTCLAS2015
- python中Input和raw_input的区别
- Nginx 配置总结
- 欢迎使用CSDN-markdown编辑器
- CCF 集合竞价 【大水】
- 如何设计一个编辑窗体的基类
- SVN局域网搭建
- 常用Math函数
- 置换元素(替换元素)和非置换元素(不可替换元素)
- C# Redis 系列一
- centos6的 shell基础学习
- IP报文结构
- 第二章.图形化管理工具
- andorid分辨率
- DevExpress v15.1:其它控件升级
- iClap专访:颠覆传统办公方式,规范化产品管理系统
- 根据26字母排列来搜索排列全国城市
- vs2012 error c4996: 'fopen': This function or variable may be unsafe
- Java程序员应该知道的10个调试技巧