Làm thế nào để kiểm tra nếu tập tin (không được quản lý) tồn tại?


18

Tôi không thể tìm thấy hàm API Drupal trong D7 cho tôi biết nếu tệp (không được quản lý) tồn tại. D6 có file_check_location nhưng không dành cho 7.

Làm thế nào để kiểm tra nếu tập tin (không được quản lý) tồn tại?

Câu trả lời:


35

Bạn chỉ có thể sử dụng hàm PHP tiêu chuẩn cũ file_exists()nếu tôi hiểu đúng về bạn:

$uri = 'public://images/an-image.jpg';
if (file_exists($uri)) {
  // Do something
}

Điều này cũng hoạt động cho các đường dẫn bình thường (tuyệt đối), ví dụ:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}

Clive để giải cứu một lần nữa, cảm ơn! Tôi có thể thuê bạn không ;-)
uwe

6
@MotoTribe Phụ thuộc vào số tiền bạn cung cấp;)
Clive

Tại sao điều này làm việc? Tôi vừa thử nghiệm điều này với PHP đơn giản và một trình xử lý luồng được ném vào file_exists()và nó không hoạt động. Có lời giải thích nào không?
kaiser

Bởi vì các luồng đã được đăng ký đúng cách bởi Drupal @kaiser. Xem php.net/manual/en/wrappers.php
Clive

@Clive Tôi hy vọng bạn có thể chỉ cho tôi nguồn trong Drupal. Phần còn lại tôi biết và không thể làm việc trong một bài kiểm tra PHP đơn giản, do đó tôi đã hỏi. Chỉnh sửa: nvm, tìm thấy chúng
kaiser

3

Tôi không biết trường hợp sử dụng cụ thể của bạn là gì, nhưng bạn có thể không cần kiểm tra xem tệp có tồn tại không.

Các hàm file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive và file_unmanaged_save_data kiểm tra xem tệp có tồn tại không và trả về false nếu không.

Bạn có thể tìm mã nguồn trong drupal / gồm / file.inc và xem qua.


3

Bạn nên sử dụng chức năng drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

và kiểm tra

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 

1
Nó sẽ hoạt động như chức năng file_destination()sử dụngfile_exists()
milkovsky
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.