在Drupal中存储外部img,就像它是由用户上传的一样

在Drupal中存储外部img,就像它是由用户上传的一样,drupal,cck,imagefield,Drupal,Cck,Imagefield,我有一个场景,用户可以通过(图像)和(视频)上传图像或视频(来自youtube或vimeo) 我的网站一直在使用ImageField图像,通过imagecache操作在各种视图中创建缩略图 Youtube/vimeo提供了我想用作图像“后备”的视频图像捕获 与其重写每个视图以提供此回退,并保持所有内容的一致性,我想知道下载和存储外部视频捕获图像的最佳途径,就像用户将其作为视频图像上传一样 我熟悉规则和操作以及PHP,非常感谢您对我应该做的任何基本概述。这将是自定义模块的一部分。我不知道有哪个模块

我有一个场景,用户可以通过(图像)和(视频)上传图像或视频(来自youtube或vimeo)

我的网站一直在使用ImageField图像,通过imagecache操作在各种视图中创建缩略图

Youtube/vimeo提供了我想用作图像“后备”的视频图像捕获

与其重写每个视图以提供此回退,并保持所有内容的一致性,我想知道下载和存储外部视频捕获图像的最佳途径,就像用户将其作为视频图像上传一样


我熟悉规则和操作以及PHP,非常感谢您对我应该做的任何基本概述。

这将是自定义模块的一部分。我不知道有哪个模块可以处理这个问题

比如模块不容易写。如果它必须执行(每个站点都必须执行,对吗?),它将包含某种队列或假脱机机制,因此它可以在自己的时间内处理和下载远程视频。 它可能需要一个编码街道,如果你想视频的一个,一致的格式。 这将需要大量丑陋的黑客,因为毕竟Youtube不允许下载他们的视频,这将使下载变得尽可能困难

在hook_nodeapi($op=='presave',…)中,您可以检查是否提供了图像并从youtube下载。一个简单的解决方案可能是使用
drupal\u http\u request()
下载文件,然后
file\u save\u data()
将其写入磁盘。但这会将不需要的文件内容加载到内存中。我认为Curl可以用来直接将HTTP文件下载到磁盘上


保存节点时下载文件可能会导致性能问题(因为这会增加响应时间)。在这种情况下,您可以将其延迟到
hook\u cron
的实现。您可以使用方便地将映像下载排队等待下一个cron。如果在Drupal的cron期间运行是一个问题,您也可以尝试使用该模块单独处理下载。

oth:您可能想看看Bluedroplet,它可能是一个非常适合您需求的替代方案。谢谢mongolitho404,我想我会带着这个跑。我创建了填充fid的函数,只是对模块函数进行了一些研究。来自youtube/vimeo的图像很小(例如14kb),我真的应该关心在保存该函数时立即调用该函数的性能,而不是cron作业吗?如果这个用户上传了他们自己的(3-6mb)图像,那么它的性能会不会接近同样的高?嗯,从youtube这样的大型网站下载小文件不应该引起关注。先把事情做好。一旦成功,您可以测试并查看下载文件创建节点是否是一个性能问题,是否需要解决。再次感谢mongolitho404,这确实帮助了我,我已经打开了自己的模块创建过程,nodeapi函数并不像我预期的那么可怕。我已经下载并存储了缩略图,只需处理数据库插入和更新:)