Drupal 7 предоставляет функцию для большей части того, что вы делаете: system_retrieve_file ().
Должна быть функция файлового модуля для сохранения файла в Drupal на основе URL, но по крайней мере эта функциядействительно существует ... просто не там, где кто-то будет искать.Вы можете использовать system_retrieve_file () с третьим параметром TRUE, чтобы создать управляемый файл (вызывая file_save_data ()).
Использование, более простой пример, чем у Jav_Rock, но практически такой же, просто пропуская причудливость пути хеширования:
$url = 'http://example.com/picture.png';
$directory = file_build_uri('custom_directory');
if (!file_prepare_directory($directory, FILE_CREATE_DIRECTORY)) {
// If our directory doesn't exist and can't be created, use the default.
$directory = NULL;
}
$file = system_retrieve_file($url, $directory, TRUE);