Lấy thư mục đường dẫn công cộng


8

Tôi muốn lưu tệp theo chương trình trong đường dẫn công khai và tôi muốn biết làm thế nào tôi có thể nhận được Public Directory pathtrong Drupal 8. Trong Drupal 7, tôi sẽ sử dụng mã sau đây.

drupal_realpath(file_default_scheme() . '://')

Tương đương trong Drupal 8 là gì?


1
Cả hai hàm thực sự vẫn tồn tại, drupal_realpath () không được dùng nữa. Nếu một chức năng không được chấp nhận, bạn hầu như luôn có thể nhìn vào triển khai của nó vì nó thường gọi dịch vụ / API mới. Bạn cũng luôn có thể tìm kiếm các bản ghi thay đổi: drupal.org/list-changes/
Kẻ

1
Ngoài ra, hai ý kiến ​​liên quan: 1. Bạn đang lưu trong đường dẫn mặc định . Đó có thể là công khai nhưng nó cũng có thể là một cái gì đó khác. Bạn chỉ có thể mã hóa công khai: // nếu bạn luôn muốn nó ở chế độ công khai. 2. Hầu hết các API có thể xử lý công khai: // trực tiếp, ví dụ: bất kỳ hoặc gần như bất kỳ tệp nào * Các hàm PHP như file_put_contents (). Không có lý do để tự chuyển đổi nó. Trong thực tế, một số trình bao bọc luồng như ví dụ: triển khai lưu trữ S3 của amazon thậm chí sẽ không cho phép điều đó.
Berdir

Câu trả lời:


20

Theo API realpath , bạn có thể tải xuống bằng:

\Drupal::service('file_system')->realpath(file_default_scheme() . "://");

Bạn đang thiếu phần file_default_scheme (), điều này không làm gì cả. Nhưng điều đó vẫn tồn tại.
Berdir

Thêm vào đó trong một chỉnh sửa.
Berdir

Khi tôi làm điều này, tôi nhận được thư mục tập tin riêng tư. Làm thế nào để tôi có được thư mục công cộng
Diana

@Diana đoạn mã trên sẽ cung cấp cho bạn đường dẫn công khai. Để có được sự riêng tư, bạn có thể làm điều này: \ Drupal :: service ('file_system') -> realpath ("private: //");
NickO

@NickO mã của bạn không hoạt động đối với tôi đối với đường dẫn hệ thống tệp riêng tư
Adrian Cid Almaguer

0

Trong trường hợp bạn chỉ muốn nhận "trang web / mặc định / tập tin" hoặc "trang web / your-multisite / tập tin" thì bạn nên sử dụng

// Add to the top of the file.
use Drupal\Core\StreamWrapper\PublicStream;

// In your method.
print PublicStream::basePath();
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.