Nhận đường dẫn thực sự của một tập tin


11

Tôi đang tạo một mô-đun đọc Excel trong Drupal 8. Tôi muốn lấy đường dẫn thực sự của một tệp để đọc nó từ một đường dẫn như công khai: //2016-03/Pftime.xls.

Tôi nên gọi hàm nào để nhận đường dẫn thực của tệp?



4
Để đọc với cái gì? Đường dẫn đó hoạt động với hầu hết mọi thứ, ví dụ file_get_contents ('công khai: // ...') hoạt động tốt.
Berdir

1
Tôi đã nhận được câu trả lời về mặt drupal 8 đó là `\ Drupal :: service ('file_system') -> realpath ('public: //2016-03/Pftime_2.xlsx')`
Nisam

1
Gửi nó như một phản ứng và chấp nhận nó như một giải pháp. Điều đó sẽ giúp những người khác có cùng câu hỏi.
Aram Boyajyan

1
Tôi đã có một tình huống tương tự, nhưng cuối cùng lại đi với file_create_url bởi vì nó có thể xử lý managed files (These are files that have either been uploaded by users or were generated automatically (for example through CSS aggregation))shipped files (those outside of the files directory, which ship as part of Drupal core or contributed modules or themes)
usernameabc

Câu trả lời:


16

Cuối cùng tôi đã có được giải pháp bằng cách đào mã Drupal.
Chúng ta có thể có được đường dẫn thực hoặc đường dẫn tuyệt đối bằng cách sử dụng dịch vụ file_system .

$absolute_path = \Drupal::service('file_system')->realpath('public://2016-03/Places_2.xlsx');

4
Đây có phải là cho các tập tin tải lên thông qua Drupal? Điều gì xảy ra nếu chúng được lưu trữ bên ngoài? The use of this method is discouraged, because it does not work for remote URIs. Except in rare cases, URIs should not be manually resolved.được đề cập đến documention cho FileSystem :: realpath
usernameabc

13

Câu trả lời @Nisam đã đúng nhưng hiện tại nó không dùng nữa: hàm drupal_realpath

Không dùng nữa

trong Drupal 8.0.x-dev, sẽ bị xóa trước Drupal 9.0.0. Sử dụng \ Drupal \ Core \ File \ FileSystem :: realpath ().

Vì vậy, bạn nên sử dụng FileSystem :: realpath .

Thí dụ:

$file = File::load($file_id);
$uri = $file->getFileUri();
$stream_wrapper_manager = \Drupal::service('stream_wrapper_manager')->getViaUri($uri);
$file_path = $stream_wrapper_manager->realpath();
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.