2013-06-12 4 views
0

Я использую файловый модуль для получения некоторых файлов из формы локально и загрузки на другой сервер. Когда я пытаюсь загрузить большие файлы, он дает мне ошибку тайм-аута (я попытался изменить 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!")); 
} 

} }

ответ

0

Я решил проблему. Проблема была в основном потому, что я дал неправильный путь в качестве цели. он должен был быть/public_html/...... вместо/home/our_name/public_html