在程序部署上经常遇到一个问题,为了安全,速度,一般都是把数据库和程序分开放在不同的服务器.一般对外一台服务器就够了,其它如果想对外,通过这台对外服务器就可以实现.
刚不久在做一个项目遇到了一个问题,程序所在的服务器空间小,另外购置了一台数据服务器(存储数据库及文件).程序里多个地方用到了附件上传,一般上传文件都放在程序目录下.可这次不一样,要放在另外一台服务器.
开始时我觉得很简单,只要建立网络映射不就可以了吗?只要有足够的权限,和操作本机盘有什么区别呢?
以前也做过这方面,用的是.net winform汇总excel,当时一点问题都没有.这次是webform,问题来了,程序根本找不到.
这下好了,想了好多方面还是没有解决,在网上也没搜索到,于是在CSDN中发了请求帖,终于解决.
http://community.csdn.net/Expert/topic/5470/5470471.xml?temp=.5512812摘要如下:
简单的测试虚拟目录设置是否正确!
假设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();
}
}
分享到:
相关推荐
linux下同时上传文件到多台服务器。值得一看
综合以上知识点,整个图片文件上传到另一台服务器的过程可以总结如下: 1. 前端使用JS或表单提交图片文件到A项目的服务器。 2. A项目接收到文件后,通过PHP代码处理文件,可能需要通过cURL或其他HTTP客户端库将文件...
C#实现本地文件保存到另一台电脑的代码,另一外一台电脑创建一个共享的文件夹everyone权限。
1. 将旧版本库复制到新服务器的一个目录下,并启动SVN服务。 2. 在本地,使用`svnadmin`工具选择本地复制的版本库,通过右键菜单选择`TortoiseSVN` -> `Relocate`。 3. 在弹出的对话框中输入新版本库的IP地址,完成...
文件上传的基本原理是通过客户端(WinForm应用程序)发起一个HTTP POST请求,将文件作为请求的一部分发送到服务器端指定的URL。服务器端接收到请求后,从中提取出文件数据并保存到指定的位置。 #### 三、具体实现...
在IT领域中,文件上传是一项非常常见的操作,它涉及到将本地计算机上的文件传输到远程服务器上。这一过程广泛应用于各种场景,比如网站开发、软件部署、数据备份等。理解如何有效地上传文件对于IT专业人士来说至关...
本项目聚焦于如何将本地文件夹中的文件上传到FTP服务器的特定目录,这在网站更新、数据迁移或备份场景中尤其有用。我们将探讨相关的知识点,并提供一些基础的实现方法。 1. FTP基本概念:FTP是一种基于TCP的应用层...
Spring Boot 提供了强大的支持来实现文件上传,下面我们将一步步介绍如何使用 Spring Boot 实现 FTP 方式上传文件到远程服务器。 标题:Spring Boot 使用 FTP 方式上传文件到远程服务器 描述:主要介绍了 Spring ...
【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、文件系统的监控以及自动化任务的执行。SFTP是一种安全的网络协议,用于在不同主机...
在Android开发中,文件上传是一项常见的任务,尤其是在构建应用程序时涉及到用户数据共享、云存储或者社交媒体集成时。本文将深入探讨Android如何实现文件上传到服务器,并结合提供的`UploadTest`和`UploadExample`...
在Java编程环境中,当涉及到两台服务器之间的文件传输时,主要涉及网络编程、I/O流处理和多线程等核心技术。下面将详细讲解这个过程,以及如何利用源码和工具来实现这一目标。 首先,我们需要了解Java中的网络编程...
1. **ASP上传组件**:ASP实现文件上传,通常需要借助服务器端组件,如`CFUpload`、`FineUpload`或自定义的ASP上传类。这些组件处理文件选择、读取、验证以及将文件写入服务器的过程。 2. **HTML表单**:客户端需要...
首先,我们来看一个简单的Shell脚本示例,该脚本用于根据用户输入的不同项目名称,将本地文件同步到指定的服务器路径: ```bash #!/bin/sh # 获取用户输入的项目名称 read -t 30 -p "请输入项目名:" name echo -e ...
在客户端上传文件到服务器的过程中,涉及的技术点众多,包括文件传输协议、前端技术、后端处理、安全性以及用户体验等。以下是对这些知识点的详细说明: 1. 文件传输协议:最常用的文件上传协议是HTTP(超文本传输...
FTP上传和下载,可以通过本地和服务器之间建立间接,通过FTP方式进行文件操作等
这对于管理多台服务器的IT人员来说是不可或缺的工具。 6. **用户友好界面**: 其直观的界面设计使初学者也能快速上手,而高级用户则可以通过自定义配置来满足特定需求。 7. **安全性**: 作为SSH客户端,...
本示例提供了一个完整的Android客户端文件上传到服务器的Demo,服务器端使用了流行的Java Web容器Tomcat。以下是关于这个过程涉及的关键知识点的详细解释。 1. **Android客户端上传文件**:在Android应用中,我们...
本项目"java 文件上传服务器,前后台代码"提供了一个完整的解决方案,涵盖了从客户端到服务器的数据传输过程。我们将深入探讨相关的知识点。 首先,我们需要了解Java中的MVC(Model-View-Controller)架构,这是Web...
FTP(File Transfer Protocol)是一种广泛用于互联网上的文件传输协议,它允许用户从一台计算机向另一台计算机传输文件。在本文中,我们将详细讨论如何利用C++实现FTP文件上传功能,以及如何利用提供的dll库——Ftp_...
在Android平台上,将文件上传至服务器是常见的任务,尤其在处理用户生成的图片、音频或视频内容时。本文将深入探讨如何实现这一功能,并提供关键知识点。 首先,我们需要理解网络请求的基本原理。在Android中,最...