Я использую файловый модуль для получения некоторых файлов из формы локально и загрузки на другой сервер. Когда я пытаюсь загрузить большие файлы, он дает мне ошибку тайм-аута (я попытался изменить php.ini, но это не так, как я хочу, чтобы он работал). Вот почему я пытаюсь загрузить файлы через ftp-функции. Однако я не могу получить исходный путь к файлу, который я только что выбрал для загрузки (например, путь к файлу, а не uri). Я хочу передать этот путь к файлу в функцию fopen() в качестве источника. Но я получаю сообщение об ошибке: * ftp_nb_fput() [function.ftp-нб-fput]: Не удается открыть этот файл:. Нет такого файла или каталога в assets_managed_file_form_upload_submit() (строка 303 из FILE_DIRECTORY) *Drupal 7 file module + php ftp function
function assets_managed_file_form_upload_submit($form, &$form_state) {
for ($i = 0; $i < $form_state['num_files']; $i++) {
if ($form_state['values']['files_fieldset']['managed_field'][$i] != 0) {
// Make the file permanent.
$file = file_load($form_state['values']['files_fieldset']['managed_field'][$i]);
$local_path = file_create_url($file->uri);
//drupal_set_message(t("file->uri: " . $file->uri . " local path: " . $local_path));
$file->status = FILE_STATUS_PERMANENT;
$directory = 'private://cubbyhouse/'. $form_state['values']['allowed_user'];
file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
$source = fopen($local_path,"r");
$conn = ftp_connect("FTP SERVER") or die("Could not connect");
ftp_login($conn,"USERNAME", "PASS");
$ftp_directory = TheDirectoryIwantToPutTheFile . $form_state['values']['allowed_user'];
$uri_parts = explode("/",$file->uri);
$filename = $uri_parts[sizeof($uri_parts)-1];
$target = $ftp_directory . "/" . $filename;
//drupal_set_message(t($target . " " . $file->uri));
$ret = ftp_nb_fput($conn,$target,$source,FTP_ASCII);
while ($ret == FTP_MOREDATA)
{
// Do whatever you want
//echo ".";
// Continue upload...
$ret = ftp_nb_continue($conn);
}
ftp_close($conn);
//$file->uri = file_unmanaged_copy($file->uri, $directory, FILE_EXISTS_REPLACE);
$file->uid = $form_state['values']['allowed_user'];
drupal_chmod($file->uri);
file_save($file);
// Need to add an entry in the file_usage table.
file_usage_add($file, 'assets', 'image', 1);
drupal_set_message(t("Your file has been uploaded!"));
}
} }