2011-11-30 93 views
2

如何将二进制字符串保存为文件?我从Excel发布二进制字符串。下面是该代码:我成功发布二进制文件,但不能上传文件在提到的位置将二进制文件保存为文件

 [HttpPost] 
    public ActionResult PostLPFile(int LPKey, string ReadFile) 

    { 
     using (FileStream srReadFile = new FileStream(@"D:\Temp", FileMode.Create)) 

     { 
      using (BinaryWriter writer = new BinaryWriter(srReadFile)) 
      { 
       writer.Write(ReadFile); 

       writer.Close(); 
      } 
     } 
     return View(); 

Sub PostFileAsBinary() 

Dim Filename As String 
Filename = "\\Network Drive\Test File\TestFile.pdf" 
FileURL = "http://localhost:11212/Upload/BinaryFile/" 

Dim ReadFile As String 
Dim n As Integer 
n = FreeFile() 

Open Filename For Binary As n 
ReadFile = String(LOF(n), vbNullChar) 
Get n, , ReadFile 
Close n 
Debug.Print ReadFile 

Set httpReq = New MSXML2.XMLHTTP 
httpReq.Open "POST", FileURL & "?ID= " & 2, False 
httpReq.SetRequestHeader "Content-Length", Len(ReadFile) 
httpReq.send ReadFile 

Debug.Print httpReq.responseText 
ReadFile = "" 
Set httpReq = Nothing 

End Sub 

这里是我的控制器操作\\Network Drive\Posted File

我想我将不得不将二进制字符串转换为流,我认为我正在努力。任何人都可以看到它并帮助吗?

+0

@ user793468,你试过在本地写吗?在UNC地址之前先尝试一下,并确保它不会写入到其他域的IIS中。 (@squillman,我的坏) –

+0

@one这其实不是我的问题,我只是把它清理了一下。 – squillman

+0

@ one.beat.consumer我在本地拥有它:FileURL =“http:// localhost:11212/Upload/BinaryFile /” – user793468

回答

3

在ASP.Net访问目录位置的安全性依赖于安全性是如何在你的web应用程序中实现:

如果您在假冒或者最终用户或特定的用户,那么将需要该用户有权访问目录位置。

如果您不使用模拟,那么它就是您的网站正在运行的应用程序池的用户身份,这将需要访问该目录。

更新

有关什么是模拟在ASP.Net意味着更多的信息,请参阅this MSDN article

+0

我不是在冒充任何人,我是以自己的身份登录的。有没有办法模仿作为管理员? – user793468

+0

@ user793468:我的模拟意思是由ASP.Net请求执行的用户上下文。我更新了答案,以包含MSDN上的一些文档链接,该链接提供了有关此主题的全面概述。我认为最简单的方法是将IIS应用程序池用户修改为可以访问该网络共享的域用户。 –

+0

@ user793468,competent_tech是正确的...... IIS正在将您的Web应用程序作为某人运行,无论它是系统,NetworkService,AppPoolIdentity还是另一个自定义帐户等内置帐户,我们都不知道......问题是无论用于运行应用程序的帐户是您用于写入文件的帐户。此外,使用WindowsAuth或Impersonation等身份验证模式将导致代表经过身份验证的用户帐户进行访问,因此他们需要特权。最后,域外文件操作更加棘手,因为它们离开了服务器。 –

相关问题