Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从“获取文件”;file://A/"_C#_Asp.net Core_Asp.net Core 2.0 - Fatal编程技术网

C# 从“获取文件”;file://A/"

C# 从“获取文件”;file://A/",c#,asp.net-core,asp.net-core-2.0,C#,Asp.net Core,Asp.net Core 2.0,如何从与相同的外部路径获取文件file://A/B/C/D/“ 在本地计算机中,我可以访问“file://”的路径,但用户没有访问权限。 现在我想从“中读取一些文件”file://A/B/C/D/“并使用户可以下载 我怎么做 (当前目录为“”) 公共异步任务下载文档(字符串berichtsummer) { var constantPath=”file://A/B/C/D/"; 使用(FileStream FileStream=System.IO.File.OpenRead(constantPat

如何从与
相同的外部路径获取文件file://A/B/C/D/“
在本地计算机中,我可以访问“file://”的路径,但用户没有访问权限。 现在我想从“中读取一些文件”file://A/B/C/D/“并使用户可以下载

我怎么做

(当前目录为“”)

公共异步任务下载文档(字符串berichtsummer)
{
var constantPath=”file://A/B/C/D/";
使用(FileStream FileStream=System.IO.File.OpenRead(constantPath))
{
MemoryStream memStream=新的MemoryStream();
SetLength(fileStream.Length);
读取(memStream.GetBuffer(),0,(int)fileStream.Length);
返回文件(文件流,“应用程序/八位字节流”);
}
}
单击下载链接时,出现以下错误:

IOException:文件名、目录名或卷标的语法 不正确:“ [

路径视图”file://A/B/C/D/“:

本地文件路径不是“file://”。您可以使用以下本地文件路径正常读取文件:

var path = "C:\\...";
然后将内容发送到客户端浏览器

如果文件不在本地计算机上,唯一的方法是使用网络共享访问它

var path = @"\\Server\Path\...";
本地文件路径不是“file://”。您可以使用以下本地文件路径正常读取文件:

var path = "C:\\...";
然后将内容发送到客户端浏览器

如果文件不在本地计算机上,唯一的方法是使用网络共享访问它

var path = @"\\Server\Path\...";

将constantPath更改为
“\\\\A\\B\\C\\D\\”

现在,您可以将
路径
发送到
下载文档
方法:

public async Task<IActionResult> DownloadDocument(string path)
{
   byte[] berichtData = null;
   FileInfo fileInfo = new FileInfo(path);
   long berichtFileLength = fileInfo.Length;
   FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
   BinaryReader br = new BinaryReader(fs);
   berichtData = br.ReadBytes((int)berichtFileLength);

   return File(berichtData, MimeTypeHelper.GetMimeType("pdf"));
}
公共异步任务下载文档(字符串路径)
{
字节[]数据=null;
FileInfo FileInfo=新的FileInfo(路径);
long berichtFileLength=fileInfo.Length;
FileStream fs=newfilestream(路径,FileMode.Open,FileAccess.Read);
BinaryReader br=新的BinaryReader(fs);
berichtData=br.ReadBytes((int)berichtFileLength);
返回文件(berichtData,mimetypeheloper.GetMimeType(“pdf”);
}

将constantPath更改为“\\\\A\\B\\C\\D\\”

现在,您可以将
路径
发送到
下载文档
方法:

public async Task<IActionResult> DownloadDocument(string path)
{
   byte[] berichtData = null;
   FileInfo fileInfo = new FileInfo(path);
   long berichtFileLength = fileInfo.Length;
   FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
   BinaryReader br = new BinaryReader(fs);
   berichtData = br.ReadBytes((int)berichtFileLength);

   return File(berichtData, MimeTypeHelper.GetMimeType("pdf"));
}
公共异步任务下载文档(字符串路径)
{
字节[]数据=null;
FileInfo FileInfo=新的FileInfo(路径);
long berichtFileLength=fileInfo.Length;
FileStream fs=newfilestream(路径,FileMode.Open,FileAccess.Read);
BinaryReader br=新的BinaryReader(fs);
berichtData=br.ReadBytes((int)berichtFileLength);
返回文件(berichtData,mimetypeheloper.GetMimeType(“pdf”);
}

您似乎已经有了代码,所以我不确定问题出在哪里?这没有任何意义。
文件:
URI方案只能在本地计算机上访问。asp.net服务器代码从未看到任何对此类URI的访问,也不需要做任何事情(也没有能力)在访问客户端的本地文件系统时进行调解。是否尝试从客户端计算机下载“随机”文件?幸运的是,您无法做到这一点!请注意,当您在本地尝试时,它可能会起作用,因为“客户端”和“服务器”机器实际上是一样的。您使用的是带有本地文件IO方法的URI。为什么?至于其余的代码,流的主要好处是您不必在一个巨大的缓冲区中加载或写入所有内容。您可以使用
stream.CopyTo
将一个流的内容复制到另一个流的内容。最后,
file
rk与本地文件或流。使用
memorystream
这里的方法是没有意义的。这听起来是XY问题的一个例子。你有一个问题X,认为Y是解决方案,所以当你遇到麻烦时,你会问Y,而不是X。在这种情况下,为什么不直接写
返回文件(路径,“应用程序/八位字节流”)
?为什么URI、内存流和显式流长度?您似乎已经有了代码,所以我不确定问题出在哪里?这没有任何意义。
文件:
URI方案只能在本地计算机上访问。asp.net服务器代码从未看到对此类URI的任何访问,也不需要执行任何操作(也不能)在访问客户端的本地文件系统时进行调解。您是否试图从客户端的计算机下载“随机”文件?幸运的是,您无法做到这一点!请注意,当您在本地尝试时,它可能会起作用,因为“客户端”和“服务器”机器实际上是一样的。您使用的是带有本地文件IO方法的URI。为什么?至于其余的代码,流的主要好处是您不必在一个巨大的缓冲区中加载或写入所有内容。您可以使用
stream.CopyTo
将一个流的内容复制到另一个流的内容。最后,
file
rk与本地文件或流。使用
memorystream
这里的方法是没有意义的。这听起来是XY问题的一个例子。你有一个问题X,认为Y是解决方案,所以当你遇到麻烦时,你会问Y,而不是X。在这种情况下,为什么不直接写
返回文件(路径,“应用程序/八位字节流”)
?为什么要使用URI、内存流和显式流长度?