ASP.NET文件从本地计算机传输到另一台计算机

时间:2010-03-17 06:36:37

标签: c# asp.net file localhost transfer

我基本上想要将文件从客户端传输到文件存储服务器而无需实际登录到服务器,这样客户端就无法直接访问服务器上的存储位置。只有当我通过Windows登录手动登录存储服务器时才能这样做。我不想这样做。这是一个基于Web的应用程序。

使用下面的链接,我为我的应用程序编写了一个代码。我无法做到正确,请参考链接并帮助我使用它......

Uploading files to file server using webclient class


以下是我的代码: -

protected void Button1_Click(object sender, EventArgs e) 
{ 

    filePath = FileUpload1.FileName;     
    try 
    { 
        WebClient client = new WebClient(); 

        NetworkCredential nc = new NetworkCredential(uName, password); 

        Uri addy = new Uri("\\\\192.168.1.3\\upload\\"); 
        client.Credentials = nc; 
        byte[] arrReturn = client.UploadFile(addy, filePath); 

        Console.WriteLine(arrReturn.ToString()); 
    } 
    catch (Exception ex) 
    { 
        Console.WriteLine(ex.Message); 
    } 

} 

以下行不会执行...

byte[] arrReturn = client.UploadFile(addy, filePath); 

这是我得到的错误:

  

a期间发生异常   WebClient请求

2 个答案:

答案 0 :(得分:1)

啊,似乎(并且有充分的理由),FileUpload只能将文件保存到Web服务器及其驱动器。所以我的第一个想法是行不通的。

但是:如果你有必要的权限,你不能只使用标准的System.IO调用将你在FileUpload中获得的文件保存到该UNC路径吗?类似的东西:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
        string completeFileName = 
           Path.Combine(@"\\192.168.1.3\upload", FileUpload1.FileName); 

        BinaryReader br = new BinaryReader(FileUpload1.PostedFile.InputStream);

        FileStream fstm = new FileStream(completeFileName, FileMode.Create, FileAccess.ReadWrite);
        BinaryWriter bw = new BinaryWriter(fstm);

        byte[] buffer = br.ReadBytes(FileUpload1.PostedFile.ContentLength);
        br.Close();

        bw.Write(buffer);
        bw.Flush();
        bw.Close();
    } 
    catch (Exception ex) 
    { 
        Console.WriteLine(ex.Message); 
    } 
} 

如果您希望上传非常大的文件,您可能希望将数据从BinaryReader传输到BinaryWriter - 而不是仅分配单个缓冲区 - 但这只是一个实现细节,真的。

答案 1 :(得分:1)

我几天前遇到了同样的问题,我通过在Web服务器上创建用户并使用相同的用户名和密码在存储服务器上解决了这个问题,然后我在web.config文件中模拟了用户。 / p>

注意:用户应在要存储文件的目录中拥有RW权限。

相关问题