gpt4 book ai didi

asp.net-mvc - 在 asp.net-mvc 中,保存用户内容(图像、文件等)时是否有一个好的库或模式可以遵循

转载 作者:行者123 更新时间:2023-12-04 03:54:13 24 4
gpt4 key购买 nike

我的网站有一个管理部分,“作者”可以在其中上传照片画廊的图片等文件,以便稍后包含在我网站的动态内容部分中。我有某些页面,其中 html 本身存储在我的 mySQL 数据库中,用户可以编辑内容 using ckeditor界面。

我正在尝试查看是否可以利用某些东西将文件保存到正确的目录并稍后检索它们,或者我应该从头开始编写所有这些。此外,寻找经验教训和要小心的事情(安全等。)

最佳答案

我会试一试。我们拥有的一个应用程序做了类似的事情,我们做了“自己做的事情”。用户可以通过我们的应用程序界面上传文件(图像、文档等),这些文件确实具有用户/公司/角色敏感权限。为了减轻一些安全问题和其他一些原因,我们实现了以下内容。

  • 在 Web 应用程序中,我们创建了一个“ Assets ”文件夹,用于存储所有用户生成的内容。然后,我们使用子文件夹来帮助分割内容( Logo 、文件等)。
  • 在 web.config 中,我们将这个文件夹配置为无法从浏览器访问(就像 App_Data 或 bin 文件夹一样),使用以下行(我们这样做是为了确保这些文件都不能直接从浏览器访问。请参阅更多关于第 4 点):
     <system.webServer>
    <security>
    <requestFiltering>
    <hiddenSegments>
    <add segment="Assets"/>
    </hiddenSegments>
    </requestFiltering>
    </security>

  • 上传文件后,我们会将有关文件的相关信息(类型、大小、名称、评论)存储在数据库中。这也使我们能够关联文件上的角色和用户安全信息。
  • 为了检索文件,我们实现了一个带有一组操作的 Controller ,该 Controller 获取请求的文件名和用户信息(因为您必须登录)并从 Assets 文件夹中返回文件。对于最终用户来说,看起来所有文件都存储在/Files/Docs/FileID 或类似的东西中,但实际上这只是文件本身的前端“看门人”。如果您未经授权或请求错误文件,此 Controller /操作方法将返回 404。对于文件命名,我们只生成 GUID 并将文件命名为“GUID.relevantExtension”(检查一个不存在)

  • 我想对于吸取的教训或诸如此类的东西,最重要的是您不要直接公开文件,尤其是在用户不共享内容的情况下。另外,这可能是个人喜好,如果不小心可能会引发一场 war ,我不太喜欢在数据库中存储文件,因为它似乎会导致分页和缓存性能问题(也不是在谈论 SQL 2008 文件列)。希望这可以帮助!

    编辑 - 关于这样做的另一个想法,在从 VS 发布时要注意。这些上传的文件不是您的解决方案的一部分,如果您执行删除上传类型的发布,您将为您的用户文件打蜡。只是提醒一下(去过那里:/)

    关于asp.net-mvc - 在 asp.net-mvc 中,保存用户内容(图像、文件等)时是否有一个好的库或模式可以遵循,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208120/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com