0

ファイル モジュールを使用して、フォームからいくつかのファイルをローカルで取得し、別のサーバーにアップロードしています。大きなファイルをアップロードしようとすると、タイムアウト エラーが発生します (php.ini を変更しようとしましたが、それは私が望んでいる方法ではありません)。そのため、ftp 関数を使用してファイルをアップロードしようとしています。ただし、アップロードするために選択したファイルのソース パスを取得できません (例: uri ではなくファイル パス)。このファイルパスをソースとして fopen() 関数に渡したいです。しかし、エラーが発生し続けます: *ftp_nb_fput() [function.ftp-nb-fput]: Can't open that file: No such file or directory in assets_managed_file_form_upload_submit() (FILE_DIRECTORY の 303 行目)*

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!"));
}

} }

4

1 に答える 1

0

問題を解決しました。問題は主に、ターゲットとして間違ったパスを指定したためです。/home/our_name/public_html ではなく、/public_html/...... でなければなりませんでした。

于 2013-06-13T00:52:11.840 に答える