2015-03-25 26 views
6

Tôi đang lưu trữ tệp cho một trang web trên Rackspace bằng Flysystem. Đang tải lên là không có vấn đề, gặp khó khăn trong việc tìm hiểu làm thế nào để bắt đầu tải về cho một tập tin - đây là những gì tôi đã cố gắngLaravel 5 Flysystem - tải xuống tệp từ đĩa từ xa

Storage::disk('rackspace'); 
return response()->download('file-library/' . $file->filename); 

Kết quả là các tập tin không thể được tìm thấy. Đang thêm Storage::disk() đủ để làm cho Laravel nhìn vào vị trí này chứ không phải cục bộ? cách tốt nhất để thực hiện điều này là gì?

Trả lời

-3

Đang thêm Storage::disk() đủ để làm cho Laravel nhìn vào vị trí này chứ không phải cục bộ?

Không, điều đó sẽ không ảnh hưởng đến response()->download() cuộc gọi.

Something như thế này nên làm việc:

return response()->download(Storage::disk('rackspace')->get('file-library/' . $file->filename)); 
+0

'is_file() hy vọng tham số 1 là một đường dẫn hợp lệ, chuỗi đã cho'. Tham số đầu tiên của tải xuống là một đường dẫn (chuỗi) – NightMICU

+0

@NightMICU Bạn có thể phải kéo nó xuống một tệp tạm thời, tôi đoán vậy. Hoặc chỉ cần liên kết người dùng thẳng đến kho lưu trữ của Rackspace. – ceejayoz

+0

@ceeyaoz có vẻ kỳ lạ là họ sẽ không nghĩ về điều này. Tôi muốn tránh phải gây rối với các tệp tạm thời (ý tưởng là giữ tất cả các tệp thuộc loại này khỏi hệ thống tệp cục bộ của tôi) và hy vọng bắt đầu tải xuống mà không cần người dùng rời khỏi trang hiện tại. – NightMICU

18

Frank đây từ Flysystem.

Cách ưu tiên để thực hiện việc này là sử dụng đầu ra readStream kết hợp với Trả lời :: luồng.

<?php 

$fs = Storage::disk('diskname')->getDriver(); 
$stream = $fs->readStream($file); 

return Response::stream(function() use($stream) { 
    fpassthru($stream); 
}, 200, [ 
    "Content-Type" => $fs->getMimetype($file), 
    "Content-Length" => $fs->getSize($file), 
    "Content-disposition" => "attachment; filename=\"" . basename($file) . "\"", 
]); 

$fs là ví dụ League\Flysystem\Filesystem. Tôi tin rằng có một phương pháp để lấy ví dụ này trong lớp hệ thống tập tin mà Laravel cung cấp.

+0

Xin chào Frank, cảm ơn vì điều này - liệu có thể cập nhật bằng một ví dụ được biết là hoạt động trong Laravel không? Tôi là một mất mát lớn với thể hiện Filesystem vì nó liên quan đến Laravel – NightMICU

+0

Tôi đã thêm nó vào dòng đầu tiên. –

+0

Tôi có thể xác nhận rằng tính năng này hoạt động ở Lumen, không thấy bất kỳ lý do nào tại sao nó không nằm trong Laravel 5 –

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