Tải lên lưu tệp không thay thế tệp hiện có mặc dù FILE_EXISTS_REPLACE


7

Tôi đang cố gắng thay thế tệp hiện có cùng tên, nếu người dùng tải lên phiên bản mới. Tôi đã thấy rất nhiều bài viết về chủ đề này nhưng không có bài viết nào tôi có thể tìm thấy địa chỉ làm thế nào để buộc người thay thế.

Tôi đang sử dụng một biểu mẫu tùy chỉnh và đây là mã tôi đã cố gắng thực hiện trong quá trình xác thực mẫu:

  $file = file_save_upload(
      'file', 
      array(
        'file_validate_is_document' => array(), // Validates file is really a document.
        'file_validate_extensions' => array('pdf doc ppt pps avi mpg mov wmv'), // Validate extensions.
      ),
      'public://',
      FILE_EXISTS_REPLACE
  );

Tệp đã sửa đổi (giả sử "file.jpg") được tải lên, nhưng chắc chắn Drupal sẽ tạo một bản sao mới và đổi tên thành file_0.jpg, file_1.jpg, v.v. cho mỗi phiên bản mới.

Tôi thậm chí đã cố gắng lập trình xóa tệp gốc bằng cách sử dụng "file_delete" trước khi cam kết tải lên nhưng tôi vẫn nhận được bản sao!

Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu trả lời:


5

Đây là hành vi mặc định của drupal và một vấn đề đã biết. Nó đã được giải quyết một vài cách.

Các Upload File Replace địa chỉ mô-đun vấn đề này bằng cách trao đổi các tên tập tin nên các tập tin mới giữ lại tên gốc.

Các phương tiện Cập nhật mô-đun cho phép thay thế chỗ của các tập tin media (một phần của trong Truyền thông dự án).

Bạn có thể sử dụng một trong các mô-đun này hoặc sử dụng chúng làm mô hình cho chức năng của riêng bạn.


Hoàn hảo, cảm ơn @triskelion cho tất cả các tùy chọn. Tôi đã kết thúc bằng cách sử dụng Thay thế tệp tải lên.
longboardnode

0

Tôi quản lý để làm cho nó hoạt động bằng cách sử dụng mã sau đây.

$file = file_save_upload('file', $validators);
// If the file passed validation:
if ($file) {
    // I PLACED IT IN THE NEXT LINE
    if ($file = file_move($file, 'public://', FILE_EXISTS_REPLACE)) {
        // Save the file for use in the submit handler.
        $form_state['storage']['file'] = $file;
    } else {
        form_set_error('file', t('Failed to write the uploaded file to the site\'s file folder.'));
    }
} else {
    form_set_error('file', t('No file was uploaded.'));
}

-1
$file_temp = file_save_data($attachment->data, 'public://<my_files_locatioin>/<my-filename.pdf>' , FILE_EXISTS_REPLACE);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.