0

对于我认为是相当普遍的问题,我一直在尝试各种解决方案,但我还没有能够以令人满意的方式解决它。

我希望实现的是用户可以上传新文件或选择现有文件以重用它们的某种功能。

到目前为止,我一直在使用的是filefield、和模块的组合。我猜 ckeditor 对于解决方案并不重要,但我需要能够以某种方式从存档中嵌入图像,这是通过 IMCE 完成的。由于我不希望从文件浏览器中访问所有内容,因此我创建了一个子目录并在 IMCE 设置中设置了对它的完全访问权限,让我们称之为filefield_sourcesimceckeditordefault/files/site

只要所有文件处理都是通过 IMCE 完成的,这工作得很好,但是当我直接从文件字段上传文件时,我的文件最终位于默认/文件根目录中,因此我为我的字段设置文件夹,例如default/files/site/movies在允许的字段中.flv格式。只要我没有尝试通过 IMCE 访问文件,这很好。似乎无法从 IMCE 访问由 filefield 创建的文件夹?

我也处于需要支持大型上传(200MB+)的位置,但根据我在其他项目中的经验,允许通过 FTP 上传文件通常是救命稻草,但据我了解 IMCE 不支持文件不以某种方式通过 Drupal 上传,因为它们不存在于数据库中(给出消息The selected file could not be used because the file does not exist in the database.:)

我知道我对我的问题并没有一个明确的问题,但不知何故我需要很快解决这个问题。我最好如何解决这个问题?我知道我不是第一个遇到这个问题的人,但我还没有找到一个好的稳定的解决方案。我错过了什么?

4

2 回答 2

1

还要检查这个线程(http://drupal.org/node/438940)和约翰洛克的工作参考:http ://www.freelock.com/blog/john-locke/2010-02/using-file-字段导入文件-drupal-drush-rescue

于 2010-04-08T03:23:26.780 回答
0

好吧,我个人对 IMCE 并不熟悉,但是如果您需要将通过 ftp 上传的文件添加到文件表中,那么我的冲动是编写一个小模块,然后允许用户单击按钮并启动批处理。(这是我假设您使用的是 Drupal 6,因为批处理 api 在 5 中不存在。)

然后,所述批处理将遍历适当目录中的所有文件,我假设您已将文件上传到该目录,使用file_copy()(从 Drupal 的文件 API)将文件复制到默认/文件/站点,然后添加说文件到文件表,这实际上很简单drupal_write_record()

它甚至可能不需要使用批处理 api - 如果您只是上传 10-30 个非常大的文件或 200-300 MB 文件,这有些重要。

对于使用批处理 api,我会查看http://drupal.org/node/180528 - 这有一个关于批处理 api 如何工作的相当基本的示例,它基本上包括告诉 api 你想继续调用 function_a ,然后在 function_a 内部设置上下文数组中的进度,直到完成,此时批处理完成。然后,您只需让通过 ftp 上传文件的人点击网站上的按钮来移动和注册文件。

于 2010-03-07T02:05:03.350 回答