文件上传问题。
我想让数据库数据和文件数据分离,数据库数据插入到本机,文件上传到另外一个服务器上。这要怎么处理?------解决方案--------------------将文件上传到网络共享服务器的方法
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()
       {
           impe