C#上传文件到网络的方法
How to upload file to network in c#
我需要使用 c# 动态上传文件。我可以用 asp.net 做到这一点,但 O 不能用桌面应用程序做到这一点。
我正在通过打开文件对话框获取要上传的文件。这是我的代码
string path = "";
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Attach PMI document";
fDialog.Filter = "PDF docs|*.pdf|JPG Files|*.jpg|JPEG Files|*.jpeg";
fDialog.InitialDirectory = @"Desktop";
if (fDialog.ShowDialog() == DialogResult.OK)
{
fileName = System.IO.Path.GetFileName(fDialog.FileName);
path = Path.GetDirectoryName(fDialog.FileName);
textBox1.Text = path + "\" + fileName;
}
打开文件对话框没有问题。
当我尝试将此代码保存到我的计算机时,它成功了
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();
但是当我尝试将文件复制到网络时它给出 "error providing a user name is not properly formed account name"
我怎样才能复制那个
谢谢
您是否需要网络凭据(用户名、密码)才能访问该特定服务器?如果是这样,您可能想看看设置主要政策,例如:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, negotiation_type);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();
请注意,您必须提供有效的用户名(有关详细信息,请参阅 this MSDN 参考)。用户名必须采用 UPN(用户主体名称,格式类似于电子邮件地址格式)的格式,通常表示为:john_doe@example.com
它将需要 Internet 域。
您提供的协商类型将用于处理身份验证 (AD)。可以找到更多信息 here
编辑:
如果此方法没有帮助(例如,当您的服务器未连接到您的域时)并且不适合您,您可能需要考虑使用 FTP 客户端。 File.Copy 不支持 URI 格式的字符串,因此 this SO Question 可能也有帮助。
问题与服务器权限有关。所以我的问题得到许可后就解决了。
我需要使用 c# 动态上传文件。我可以用 asp.net 做到这一点,但 O 不能用桌面应用程序做到这一点。
我正在通过打开文件对话框获取要上传的文件。这是我的代码
string path = "";
OpenFileDialog fDialog = new OpenFileDialog();
fDialog.Title = "Attach PMI document";
fDialog.Filter = "PDF docs|*.pdf|JPG Files|*.jpg|JPEG Files|*.jpeg";
fDialog.InitialDirectory = @"Desktop";
if (fDialog.ShowDialog() == DialogResult.OK)
{
fileName = System.IO.Path.GetFileName(fDialog.FileName);
path = Path.GetDirectoryName(fDialog.FileName);
textBox1.Text = path + "\" + fileName;
}
打开文件对话框没有问题。
当我尝试将此代码保存到我的计算机时,它成功了
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();
但是当我尝试将文件复制到网络时它给出 "error providing a user name is not properly formed account name"
我怎样才能复制那个 谢谢
您是否需要网络凭据(用户名、密码)才能访问该特定服务器?如果是这样,您可能想看看设置主要政策,例如:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, negotiation_type);
WindowsImpersonationContext context = idnt.Impersonate();
File.Copy(@"\192.100.0.2\temp", @"D:\WorkDir\TempDir\test.txt", true);
context.Undo();
请注意,您必须提供有效的用户名(有关详细信息,请参阅 this MSDN 参考)。用户名必须采用 UPN(用户主体名称,格式类似于电子邮件地址格式)的格式,通常表示为:john_doe@example.com 它将需要 Internet 域。
您提供的协商类型将用于处理身份验证 (AD)。可以找到更多信息 here
编辑:
如果此方法没有帮助(例如,当您的服务器未连接到您的域时)并且不适合您,您可能需要考虑使用 FTP 客户端。 File.Copy 不支持 URI 格式的字符串,因此 this SO Question 可能也有帮助。
问题与服务器权限有关。所以我的问题得到许可后就解决了。