我需要用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();
但是当我尝试将文件复制到网络时,它会出现“错误,提供的用户名未正确形成帐户名称”
我该如何复制呢? 感谢。
答案 0 :(得分:0)
您是否需要网络凭据(用户名,密码)才能访问该特定服务器?如果是这样,您可能希望查看设置主要策略,例如:
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 它将需要互联网域名。
您提供的协商类型将用于处理身份验证(AD)。可以找到更多信息here
修改强>
如果此方法没有帮助(例如,当您的服务器未连接到您的域时)并且不适合您,则可能需要考虑使用FTP客户端。 File.Copy不支持URI格式的字符串,因此this SO Question可能也有帮助。
答案 1 :(得分:0)
问题与服务器权限有关。因此我的问题在获得许可后得以解决。