.net 文件上传到另一台服务器上

本文详细介绍了如何在文件服务器上创建具有特定权限的帐户,以便应用程序服务器可以通过虚拟目录访问并上传文件。此外,还提供了处理信任连接及解决权限问题的方法。

总结了网上几位大大的方法,终于调试通过,方法如下:

1,在文件服务器上,创建一个本地帐户,比如登录名:upload,密码:upload,注意在创建的时候选择“密码永不过期”,去掉勾选“用户下次登录时须更改密码”的选项;
2,在要共享的文件夹上点右键,选择“属性”-“安全”,增加upload帐户可以写入的权限;
3,在要共享的文件夹上点右键,选择“共享”,共享此文件夹,并在“权限”按钮点击后添加帐户upload可修改;

4.需要在应用程序服务器的站点下任意新建一个虚拟目录,然后“属性”--》“连接到另一台计算机”--》然后在路径里输入“\\文件服务器的IP\共享的文件夹名称”,确定即可
5,在另外一台 Web 服务器上,创建登录名和密码与上面完全相同的本地帐户。
6,在web.config里,启用模拟:      

web.config里添加的代码
<identity impersonate="true" userName="upload" password="upload" />

7(可选).web站点的Global.asax文件里加载一句话,让服务器站点启动的时候就和文件服务器建立信任连接
System.Diagnostics.Process.Start("cmd.exe", "net use \\\\文件服务器的IP\\共享的文件夹名称 \"123456\" /user:\"test\"");  

最后保存的时候还是按平时保存文件的方式就行。

protected void Button1_Click(object sender, EventArgs e)
{
  
string fileName= System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
  FileUpload1.SaveAs(
@"\\192.168.3.1\free\"+ fileName);
}

注意:
1.以上步骤中的4,5必须按顺序操作,如果后来删除了虚拟目录,则需要也删除5中创建的用户,然后按照4,5的顺序再次创建即可(因为本人后来直接删除虚拟目录并重新创建,而没有删除5中的用户,出现了问题。)
2.在做完以上步骤需要继续完成下载或打开功能时,如果出现要求输入用户名和密码登录共享文件夹的情况,而设置文件服务器的本地策略无果的时候,在虚拟目录中重新创建一个默认站点之外的站点,指向这个共享文件夹即可(注意新建站点的端口是否冲突)。
### 使用 C# 和 ASP.NET 实现文件上传至服务器 为了实现文件上传功能,在ASP.NET Web Forms中可以利用`<asp:FileUpload>`控件来获取客户端要上传的文件,并通过后台代码处理该文件并保存到指定位置。 下面展示了一个简单的HTML表单用于选择本地文件以及触发上传操作: ```html <form id="form1" runat="server"> <div> <!-- File input control --> <asp:FileUpload ID="fileUpload" runat="server"/> <!-- Button to trigger file upload process --> <asp:Button ID="btnUpload" runat="server" Text="上传文件" OnClick="btnUpload_Click"/> </div> </form> ``` 当用户点击按钮时会调用名为`btnUpload_Click`的方法,此方法定义于Code-Behind文件之中。以下是对应的C#事件处理器示例,它负责接收来自用户的文件流并将之存储在服务器上的特定路径下[^2]。 ```csharp protected void btnUpload_Click(object sender, EventArgs e) { if (fileUpload.HasFile) // Check whether a file has been selected. { try { string fileName = Path.GetFileName(fileUpload.FileName); string filePath = Server.MapPath("~/uploads/" + fileName); // Define the path where you want to save files. fileUpload.SaveAs(filePath); // Save uploaded file on server disk system at specified location. lblMessage.Text = "文件已成功上傳!"; } catch (Exception ex) { lblMessage.Text = $"發生錯誤:{ex.Message}"; } } } ``` 这段程序首先验证是否有文件被选中;如果有,则尝试将其保存到Web应用根目录下的`uploads`子文件夹内。如果一切顺利,页面将显示一条确认消息给用户;反之则报告异常情况。 对于更复杂的应用场景比如大文件传输、断点续传等功能,还需要考虑采用其他技术方案如基于HTTP协议的分片机制或是第三方库的支持[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值