0

在我的 asp.net 网站中,用户可以上传多个文件,这些文件位于服务器硬盘上的“上传”文件夹中。我通过使用用户名+原始文件名重命名文件来保存文件示例:如果我上传文件'user.text'并且我的代码是1000,那么文件将保存在名为'1000_user.Text'的上传文件夹中。这是为了针对特定用户识别文件。现在,当管理员登录应用程序并选择一个用户时,他应该能够看到他/她上传的所有文件。文件应该是可下载的格式给他。

我怎样才能达到同样的效果?我完全不知道,如何去做?

4

4 回答 4

0

最推荐的实现方式是使用数据库,它与 Gallery 的一个模块相同,其中用户有相册和相册中的一些图片。管理员可以查看每个用户的相册和相册中的图片。您必须在数据库中引入两个表。我有正在上传的文件的类别信息(主表)和其他包含文件本身信息的表(详细信息表)。

另一种方法是为应用程序中的文件类别的每个用户创建一个分层文件夹目录,然后递归读取目录和字段,然后将它们列出以显示给应用程序用户。我猜当文件数量会增加时,这将是昂贵的。

于 2013-04-26T07:18:19.623 回答
0

我可以根据可行性向您建议几种方法。方法 1 - 如果您可以更改数据库,当用户上传文件时,您应该在数据库中保存针对用户动态生成的文件名。这样当管理员登录并想要查看用户上传的所有文件时,您只需要进行数据库查询并将它们显示在网格中即可。当用户单击文件名时,您可以从硬盘中获取文件并允许它下载到管理员。

如果数据库更改不可行,您的任务将更加困难。您必须在所有文件中使用用户名查询您的目录。您可以使用 LINQ 使这项任务对您来说更容易一些。获得所有列表后,将其显示给管理员。

于 2013-04-24T09:48:27.687 回答
0

这不是您在 SO 上提问的方式。无论如何已经是一条建议:

  1. 将您的文件存储在 webroot 之外,并在您的网站中使用脚本来获取文件并将其呈现给用户。这是出于安全原因:如果有人设法上传了恶意文件,您不希望他能够从网络上执行它。
  2. 在数据库中存储文件信息和上传信息:谁上传了什么以及何时上传?依赖文件名不是一个好主意。您也可以最终将文件存储在数据库中(作为 BLOB),但我更喜欢旧的文件系统
于 2013-04-24T09:45:47.130 回答
0

我建议您将有关文件的元数据保存在数据库中(例如原始文件名和用户名)。然后,您可以使用此元数据来查找用户已上传的文件。根据数据库表中的唯一 ID 为文件指定磁盘上的文件名。这样,用户可以上传多个同名文件。确保此文件夹不在您的应用程序中,以便出于安全原因可以通过 url 访问它们。

于 2013-04-24T09:49:06.283 回答