如何把文件上传到另外一台服务器2
来源:互联网 发布:日本人生活方式 知乎 编辑:程序博客网 时间:2024/05/14 10:13
将文件上传到网络共享服务器的方法1,在文件服务器上,创建一个本地帐户,比如登录名:upload,密码:upload,注意在创建的时候选择“密码永不过期”,去掉勾选“用户下次登录时须更改密码”的选项;
2,在要共享的文件夹上点右键,选择“属性”-“安全”,增加upload帐户可以写入的权限;
3,在要共享的文件夹上点右键,选择“共享”,共享此文件夹,并在“权限”按钮点击后添加帐户upload可修改;
4,在另外一台 Web 服务器上,创建登录名和密码与上面完全相同的本地帐户。
5,在web.config里,启用模拟:
web.config里添加的代码
< identity impersonate="true" userName="upload" password="upload" />
6,在网站文件夹和Temporary ASP.NET Files文件夹上设置帐户upload读写权限
7,在ASP.NET的上传文件里写:
C# 代码
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);
}
8,显示上传的文件:
在IIS里创建虚拟目录,指向“另一台计算机上的共享”,“连接为”输入上面创建的帐户名和密码。即可以http://www.mengxianhui.com/upload/hello.jpg进行访问。
注意:在VS里面直接运行可能会报告
Could not load file or assembly 'WebApplication1' or one of its dependencies. 拒绝访问。
这是因为你模拟的帐户没有权限导致的,你可以发布到IIS看效果。
下面是一段使用程序进行模拟的方法,出自 http://2leggedspider.wordpress.com/2007/05/28/upload-files-to-unc-share-using-asp-net/ :
C# 代码
using System.Security.Principal;
using System.Runtime.InteropServices;
namespace FileUploadUNCShare
{
public partial class _Default : System.Web.UI.Page
{
public const int LOGON32_LOGON_INTERACTIVE = 2;
public const int LOGON32_PROVIDER_DEFAULT = 0;
WindowsImpersonationContext impersonationContext;
[DllImport("advapi32.dll")]
public static extern int LogonUserA(String lpszUserName,
String lpszDomain,
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
ref IntPtr phToken);
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int DuplicateToken(IntPtr hToken,
int impersonationLevel,
ref IntPtr hNewToken);
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool RevertToSelf();
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern bool CloseHandle(IntPtr handle);
private bool ImpersonateUser(String userName, String domain, String password)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUserA(userName, domain, password, LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if (impersonationContext != null)
{
CloseHandle(token);
CloseHandle(tokenDuplicate);
return true;
}
}
}
}
if (token != IntPtr.Zero)
CloseHandle(token);
if (tokenDuplicate != IntPtr.Zero)
CloseHandle(tokenDuplicate);
return false;
}
private void UndoImpersonation()
{
impersonationContext.Undo();
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (ImpersonateUser("upload", "", "upload"))
{
if ((FileUpload1.PostedFile != null) && (FileUpload1.PostedFile.ContentLength > 0))
{
string fileName = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);
string folderPath = @"\\MyUNCShare\MyFolder\";
string locationToSave = folderPath + "\\" + fileName;
try
{
FileUpload1.PostedFile.SaveAs(locationToSave);
Response.Write("The file has been uploaded.");
}
catch (Exception ex)
{
Response.Write("Error: " + ex.Message);
}
}
else
{
Response.Write("Please select a file to upload.");
}
UndoImpersonation();
}
else
{
Response.Write("Failed");
}
}
}
}
0 0
- 如何把文件上传到另外一台服务器2
- 如何把文件上传到另外一台服务器
- 如何把文件上传到另外一台服务器
- 如何把文件上传到另外一台服务器【转】
- 如何把文件上传到另外一台服务器
- 如何把文件上传到另外一台服务器1
- 如何把文件上传到另外一台服务器3
- 如何把文件上传到另外一台服务器
- ASP.Net如何把文件从一台服务器上传到另外一台服务器
- asp.net如何把文件上传到另外一台服务器[CSDN]。
- 如何把文件上传到另外一台服务器【转自 金色約定之家】
- asp.net如何把文件上传到另外一台服务器
- 上传文件并保存到另外一台服务器
- 使用jersey实现图片上传到另外一台服务器
- 拷贝数据库到另外一台服务器
- 定时备份SQL SERVER的数据库并且把备份文件复制到另外一台服务器保存
- 如何重装Domino服务器或者将Domino服务器从一台机器迁移到另外一台
- nginx 从一个服务器拷贝文件到另外一台服务器
- JS设计模式——迭代器模式
- GridView完美的例子
- IOS开发—Core Animation核心动画介绍
- 如何把演示文稿ppt转成pdf格式
- mybatis打印不出SQL语句的问题
- 如何把文件上传到另外一台服务器2
- codeforces 396A A. On Number of Decompositions into Multipliers(组合数学+数论)
- python 里list, tuple, set, dict的异同
- 数据结构学习之路-第三章:顺序栈
- SequenceFile在hadoop中使用
- JS设计模式——策略模式
- 查询存储过程创建时间
- 数字信号处理的栅栏效应和时域补零
- 如何把文件上传到另外一台服务器3