2012-09-20 81 views
0

我有一个ASP.Net网站,在某些情况下,它生成.pdf文件和.csv文件供用户下载。ASP.NET网站在哪里可以保存生成的文件

现在我的问题:什么是在网络服务器上保存文件的默认目录?有什么ASP.NET文件夹像App _...或类似的东西?

您能推荐些什么?

回答

1

您可以创建正确的文件夹了这方面的需要

这里特定的文件夹列表中(但你并不需要):

App_GlobalResources, 
App_LocalResources, 
App_Resources 
App_Themes 
App_WebReferences) 
App_Code 
App_Data 
App_Browsers 

这里关于项目结构

链接MSDN链接: http://msdn.microsoft.com/en-us/library/ex526337%28v=vs.100%29.aspx

1

这真的取决于你!我建议你将它们放在你的解决方案的子文件夹中,这样它们就可以自成一体,并且可以轻松地控制安全性,而无需担心树下的文件夹。

1

文件夹是你告诉它的任何东西。如果你的音量很小,你可以直接从内存中传输文件,这样它们就不会存储在服务器上。

3

如果您不想重复使用这些文件,请直接流式传输文件而不将其保存到磁盘。

如果将它保存到磁盘上,您必须问问自己,文件的内容是否可供所有用户使用,或者其他用户是否可以访问这些文件是一个坏主意。如果这是一个坏主意,通过相应地设置访问权限,用户将文件放入文件夹应该不可用。您可以通过将该文件夹放在网站目录之外或通过在文件系统或Web服务器上设置安全设置来执行此操作。

基本上可以将这些文件放在任何文件夹中,这些文件夹对写入文件的用户(通常是ASP.NET App Pool用户)可写。 IIRC默认情况下,ASP.NET用户可以写入App_data文件夹,因此可以成为候选人。

+0

感谢您的回答!没有保存到光盘的流文件,这听起来真的很有趣!我怎样才能做到这一点? – Nagelfar

+0

@Nagelfar - 如果你使用MVC,你可以看到[这个问题](http://stackoverflow.com/questions/5828315/write-pdf-stream-to-response-stream)。如果你使用webforms见[这里](http://stackoverflow.com/questions/5916647/write-pdf-stream-to-response-stream)。基本上,您可以按照链接示例所示的方式流式传输任何类型的流(如果没有物理文件,则使用MemoryStream)。 – PHeiberg

+0

@Nagelfar - 如果您使用组件在内存中生成PDF文件,通常会有将文件写入流的选项。对于CSV文件库也是如此。如果你自己生成CSV文件,这里有一个[问题](http://stackoverflow.com/questions/946908/asp-net-stream-content-from-memory-and-not-from-file)流式CSV。 – PHeiberg

0

重要的是,您要考虑是否要有多个Web服务器,并且在群集中有服务器。为了做好准备,最好不要将这些文件保存在Web应用程序文件夹下,也不要将它们存储到相对于应用程序路径的文件中,而是将这些文件保存在一个单独的文件夹中,您可以轻松地将其暴露出来成为安全问题)作为网络路径。

相关问题