Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Javascript 选择目录ASP.NET MVC-5_Javascript_Jquery_Asp.net Mvc_Html_Asp.net Mvc 5 - Fatal编程技术网

Javascript 选择目录ASP.NET MVC-5

Javascript 选择目录ASP.NET MVC-5,javascript,jquery,asp.net-mvc,html,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc,Html,Asp.net Mvc 5,我的部分要求是,用户需要能够将通过控制器填充的HTML表格导出到excel。我可以创建一个.csv并将其导出。但是,我需要能够让他们选择一个目录 HTML5答案: 但是,这不允许您选择目录,只允许选择特定的文件 JavaScript: 无论我读到哪里,这都是一个巨大的安全威胁。虽然有一些黑客,我真的不想使用它 当您点击该函数时,我试图从控制器调用FolderBrowserDialog,但我缺少Assemblys引用,无法找到正确的引用 我的问题:如果在ASP.NET MVC5项目中,您必须让用户

我的部分要求是,用户需要能够将通过控制器填充的HTML表格导出到excel。我可以创建一个.csv并将其导出。但是,我需要能够让他们选择一个目录

HTML5答案:

但是,这不允许您选择目录,只允许选择特定的文件

JavaScript:

无论我读到哪里,这都是一个巨大的安全威胁。虽然有一些黑客,我真的不想使用它

当您点击该函数时,我试图从控制器调用FolderBrowserDialog,但我缺少Assemblys引用,无法找到正确的引用

我的问题:如果在ASP.NET MVC5项目中,您必须让用户选择一个目录,文件将导出到该目录,您会如何做?HTML5、JavaScript/JQuery、C对我来说并不重要。没有安全威胁


谢谢大家

生成文件时,只需将“内容处置”标题设置为“附件”。这将导致弹出“普通浏览器保存”对话框,用户可以在任意位置导航和保存该对话框

因此,在您的操作方法中,我假设您正在执行以下操作: ... 创建csv。。。 返回文件csvdata,text/csv

该方法具有接受默认文件名的重载。如果您设置文件名,它将自动为您添加内容处置头,并导致文件被下载而不是打开


返回FilecsvData、text/csv、somefile.csv

首先,当您说选择要将文件导出到的目录时,您说的是客户端还是服务器端?如果将其作为下载推送给用户,则您无法控制任何内容:它存储在何处,甚至它的名称


如果你说的是服务器端,那么你可以用两种方式之一来处理它。您可以只使用目录选项填充一个选择列表,然后使用该列表在submit上构建一个路径。或者,您可以采取更复杂的方法,尝试创建一个界面来浏览服务器的文件系统。这里没有什么可以帮助你的东西;您必须自己创建它,或者找一些第三方工具来为您创建它。基本上,您只需使用I/O工具读取目录列表,并以树状层次结构的形式将其呈现给用户。

听起来您是在复制浏览器已经提供的工作。创建CSV后,将其放在服务器上,准备下载一个专用文件夹(清理后)或一个单独的文档管理服务器,并将文件的下载链接发送回客户端。然后,用户单击指向该文件的链接或将URL设置为该文件的iframe会触发该链接,从而打开浏览器默认的“另存为”对话框,让用户选择将文件下载到何处。@FrançoisWahl那么视图是否应该进行aJax调用来完成此操作?你能提供一篇文章或一些代码来说明如何做到这一点吗?我们使用MVC3,不使用HTML5文件输入。因此,ajax请求将URL返回到我们创建的文件。然后,脚本将iframe URL设置到该位置,并触发该对话框。我我并不是说这是正常的:这只是我们最终的结果。不确定MVC5是否能做得更容易/更好。因此,浏览器的默认保存方式最终应该用于保存文件。MVC5与MVC3和MVC4相比非常漂亮。哈哈,我将尝试它,如果它有效,我将进行更新。不,我在控制器中创建文件服务器端,并设置客户端机器的路径。我很惊讶它也能正常工作,但我没有任何问题。我不确定你在做什么,但绝对不可能直接写入客户机。如果这是一个内部网络,您可以通过某种方式获取客户端的主机并通过网络进行写入,但这不仅有点吓人,因为它要求你的应用程序拥有一些疯狂的网络特权,而且与向客户端写入内容也不是一回事:你只是在向一个连接的网络资源写入内容,而这个网络资源恰好是客户端的机器。谢谢你的输入,我一定会看这个。我不知道这个问题。我真的很喜欢返回文件的@恶意回答。但问题是,从这个角度看,这会是什么样子?作为下载?这里有安全问题吗?下载了吗?不,没有任何安全问题,除了任何资源的常见问题:只有那些被允许访问它的人才能使用,特别是敏感信息。在这种情况下,您将没有视图,您只是将文件本身作为响应而不是HTML文档返回,实际上我并没有返回文件。如果我确实返回了一个文件,它会下载到用户浏览器上吗?这取决于,这是内容配置头决定的。如果按此处所示将其设置为附件,则会提示下载。否则,如果它是可显示格式,浏览器将默认尝试在浏览器中显示它。实际上,我对CSV不太确定。它是纯文本,但浏览器可能会提示下载。
   <input type="file">