2015-08-14 17 views
6

Tôi có dự án Laravel sẽ lưu tệp (txt hoặc csv) sau khi thực hiện một số tính toán.Nơi lưu tệp trong cấu trúc thư mục Laravel 5?

Tôi đang tìm kiếm một phương pháp hay nhất về nơi lưu các tệp này. Có thể/resources/csv/...?

Câu hỏi thứ hai sẽ là cách tốt nhất để tham khảo đường dẫn này từ trong lớp học như thế nào? Thiết lập đường dẫn abs trong tệp .env? Có phương pháp laravel nào sẽ trả về đường dẫn đến tài nguyên không?

Trả lời

17

/resources không phải là nơi tốt nhất vì thư mục này được sử dụng cho tệp nguồn và thường được lưu trữ trong kho lưu trữ mã nguồn (ví dụ: git).

Các tệp mà ứng dụng tạo thường kết thúc ở đâu đó trong/thư mục lưu trữ - chỉ cần tạo một thư mục /storage/csv tại đó.

Bạn không bao giờ nên tham khảo những tệp đó trực tiếp từ lớp học của mình. Hệ thống tập tin của Laravel là những gì bạn cần - bạn có thể đọc thêm về chúng tại đây: http://laravel.com/docs/master/filesystem. Họ thực hiện các thao tác trên các tệp (như đọc, viết, thêm, thêm, xóa, di chuyển, nhận tất cả các tệp và nhiều tệp khác ...) đơn giản hơn rất nhiều.

Bắt đầu với việc xác định một hệ thống tập tin trong cấu hình của bạn/filesystems.php

'disks' => [ 
    'csv' => [ 
    'driver' => 'local', 
    'root' => storage_path().'/csv', 
    ], 
], 

Bây giờ bạn có thể đọc/ghi file csv của bạn thông qua lưu trữ mặt tiền từ bất cứ nơi nào trong mã của bạn như thế:

Storage::disk('csv')->put('file.csv', $content); 
$content = Storage::disk('csv')->get('file.csv'); 
+0

Nhu cầu hiện tại của tôi là tạo tệp sau đó sử dụng nó trên cùng một thực thi. Không có tham chiếu tệp "vĩnh viễn". Dù sao giải pháp bạn cung cấp là tuyệt vời. Cảm ơn – koalaok

+0

Nếu tôi có nhiều thư mục con trong thư mục csv. Bạn đề nghị làm gì để truy cập trực tiếp? Xác định rõ hơn các mục cụ thể hơn trong config/filesystems.php? hoặc xâu chuỗi như Storage :: disk ('csv'). "/ mysubdir /../" (dunno chưa viết cách này chính xác ..) – koalaok

+1

Bao gồm thư mục trong tên tệp bạn chuyển để đặt/nhận, ví dụ: -> put ('folder/file.csv', $ content). –

3

Bạn có thể lưu tệp trong thư mục lưu trữ.

Ví dụ:

Bạn có thể tạo một thư mục có tên csv trong thư mục lưu trữ và lấy đường dẫn như sau:

storage_path().'/csv'; 

Bạn có thể tìm thư mục lưu trữ trong

Laravel 4.2: app> storage
Laravel 5+: trong thư mục gốc

+0

Các tệp trong storage_path() không có nghĩa là được truy cập trực tiếp. Hệ thống tập tin của Laravel nên được sử dụng cho điều đó - http://laravel.com/docs/master/filesystem –

Các vấn đề liên quan