LẤY ĐƯỜNG DẪN FILE TRONG PHP

      175

Tôi đã từng nghiệm thực hiện tích hợp Flysystem mới với Laravel 5. Tôi đã lưu trữ các đường dẫn "được phiên bản địa hóa" cho DB với nhận thấy mặt chi phí Storage để chấm dứt băng thông. Ví dụ: tôi tàng trữ screenshots/1.jpg với sử dụng

Storage::disk("local")->get("screenshots/1.jpg")hoặc là

Storage::disk("s3")->get("screenshots/1.jpg") Tôi rất có thể đem cùng một tệp bên trên những đĩa khác biệt.

Bạn đang xem: Lấy đường dẫn file trong php

get rước câu chữ tệp, tuy nhiên tôi mong muốn đã thực hiện nó vào chính sách coi của chính mình như vậy này:

*
dẫu vậy đường dẫn hoặc bất cứ lắp thêm gì có thể tầm nã xuất băng thông rất đầy đủ gần như không tồn tại sẵn (theo nlỗi tôi rất có thể thấy). Vì vậy, làm cho cố nào tôi có thể trả lại đường truyền đầy đủ? Hoặc, tôi từ bỏ hỏi nếu như đó là vì chưng thiết kế? Nếu vậy, tại vì sao tôi ko được phép đã đạt được đường truyền đầy đủ? Hoặc, tôi đã đi về vấn đề đó hoàn toàn sai cách?


phplaravel-5flysystem
60
10 thg 3, 2015daviestar
Chỉnh sửa: Giải pháp cho L5.2 +

Có một giải pháp xuất sắc rộng cùng đơn giản dễ dàng hơn.

Sử dụng Storage::url($filename) nhằm thừa nhận đường dẫn/URL không thiếu của một tệp vẫn mang lại. Lưu ý rằng bạn phải đặt S3 có tác dụng hệ thống tệp lưu trữ của mình trong config/filesystems.php: "default" => "s3"

Tất nhiên, chúng ta có thể tiến hành Storage::disk("s3")->url($filename) theo cách tương tự như.

Nlỗi bạn có thể thấy trong config/filesystems.php cũng có thể có một tsay đắm số "cloud" => "s3" được xác minh, tsi chiếu mang lại hệ thống tệp Cloud. Trong ngôi trường phù hợp bạn muốn đảm bảo thư mục tàng trữ trong máy chủ toàn thể nhưng lại truy tìm xuất/tàng trữ một trong những tệp vào đám mây, hãy sử dụng Storage::cloud(), cũng đều có những thủ tục khối hệ thống tệp tương tự, ví dụ: Storage::cloud()->url($filename).

Tài liệu Laravel không đề cập đến phương thức này, tuy nhiên ví như bạn có nhu cầu hiểu thêm về nó, chúng ta có thể chất vấn mã mối cung cấp của chính nó trên phía trên .

Xem thêm: + Mẫu Báo Giá Vận Chuyển Hàng Hóa, Mẫu Bảng Báo Giá Cước Vận Chuyển


41
5 thg 4, 2016pj.martorell
Đường dẫn đến đĩa Lưu trữ của bạn sẽ là:

$storagePath = Storage::disk("local")->getDriver()->getAdapter()->getPathPrefix()Tôi không biết ngẫu nhiên phương án ngắn hơn như thế nào mang đến điều ấy ...

quý khách hàng có thể share $ StoragePath mang đến Lượt coi của bản thân mình cùng sau đó chỉ việc gọi

$storagePath."/myImg.jpg";
129
11 thg 3, 2015shock_gone_wild
Phương thức này mãi sau kể từ Laravel 5.4, chúng ta cũng có thể mang nó bởi cách:

$path = Storage::disk("public")->path($filename);
37
28 thg 3, 2018Bilal Gultekin
Đây là phương pháp tôi tạo nên nó hoạt động - đổi khác giữa s3 cùng đường dẫn thư mục cục bộ với một đổi mới môi trường, đưa đường dẫn mang lại tất cả những size chú ý.

Trong .env:

APP_FILESYSTEM=local or s3S3_BUCKET=BucketIDTrong cấu hình/filesystems.php:

"default" => env("APP_FILESYSTEM"),Trong ứng dụng/Nhà cung cấp/AppServiceProvider:

public function boot() view()->share("dynamic_storage", $this->storagePath());protected function storagePath() if(Storage::getDefaultDriver() == "s3") return Storage::getDriver() ->getAdapter() ->getClient() ->getObjectUrl(env("S3_BUCKET"), ""); return URL::to("/");
8
16 thg 3, 2015daviestar
Đầu tiên rước url/link tệp sau đó đường truyền, nlỗi bên dưới đây:

$url = Storage::disk("public")->url($filename);$path = public_path($url);
3
26 thg 7, 2016muzk6
Chà, tuần trước tôi vẫn gồm một câu hỏi vô cùng như thể ( Nhận url CDoanh Nghiệp từ bỏ tệp được tải lên qua Storage ): Tôi hy vọng url CDoanh Nghiệp hiển thị hình hình họa trong cơ chế xem của tớ (như bạn đang yêu thương cầu).

Tuy nhiên, sau khi lưu ý API gói tôi vẫn xác nhận rằng không có giải pháp như thế nào tiến hành trách nhiệm này. Vì vậy, chiến thuật của tớ là rời thực hiện flysystem. Trong trường đúng theo của mình, tôi cần nghịch với RackSpace. Vì vậy, sau cuối đưa ra quyết định tạo gói sử dụng của tôi cùng tạo thành gói tàng trữ của riêng rẽ tôi bằng cách thực hiện The PHP SDK mang đến OpenStachồng .

Bằng biện pháp này, các bạn bao gồm quyền truy cập không thiếu thốn những chức năng mà lại bạn phải nlỗi getPublicUrl() để dấn URL công khai từ bộ cất cdn:

/**
var DataObject $file */$file = OpenCloud::container("cdn")->getObject("screenshots/1.jpg");// $url: https://d224d291-8316ade.ssl.cf1.rackcdn.com/screenshots/1.jpg$url = (string) $file->getPublicUrl(UrlType::SSL);Tóm lại, ví như cần đưa hình thức lưu trữ lên một cấp độ khác, thì flysystem là không được. Đối với mục tiêu local, chúng ta cũng có thể thử chiến thuật của
nXu


3
10 thg 3, 2015manix
Nếu bạn cần URL tuyệt vời nhất của tệp, thực hiện mã mặt dưới:

$file_path = Storage::url($filename);$url = asset($file_path);// Output: http://example.com/storage/filename.jpg
2
26 thg 9, 2017Arvind Bhardwaj
Pmùi hương pháp giữ trữ:

public function upload($img) $filename = Carbon::now() . "-" . $img->getClientOriginalName(); return Storage::put($filename, File::get($img)) ? $filename : "";Tuyến đường:

Route::get("image/filename", < "as" => "sản phẩm.image", "uses" => "", >);Điều khiển:

public function getImage($filename) $tệp tin = Storage::get($filename); return new Response($file, 200); Lượt xem:

*
$yourImageName>) }}" alt="your image"/>
2
10 thg 10, 2016MevlütÖzdemir
Nếu các bạn chỉ ước ao hiển thị đường truyền tàng trữ (đĩa), hãy sử dụng:

Storage::disk("local")->url("screenshots/1.jpg"); // storage/screenshots/1.jpgStorage::disk("local")->url(""): // storageBên cạnh đó, nếu như khách hàng quyên tâm, tôi vẫn sinh sản một gói ( https://github.com/fsasvari/laravel-uploadify ) chỉ mang đến Laravel để chúng ta cũng có thể áp dụng toàn bộ những ngôi trường bên trên Các ngôi trường mô hình xuất sắc:

$oto = Car::first();$car->upload_cover_image->url();$car->upload_cover_image->name();$car->upload_cover_image->basename();$car->upload_cover_image->extension();$car->upload_cover_image->filesize();
2
2 thg 8, 2017fsasvari
Trong trường thích hợp của tôi, tôi vẫn tạo phương thức riêng cho những tệp cục bộ, trong tệp này: src/Illuminate/Filesystem/FilesystemAd Module.php

/** * Get the local path for the given filename. *
param $path *
return string */public function localPath($path) $adapter = $this->driver->getAdapter(); if ($adapter instanceof LocalAdapter) return $adapter->getPathPrefix().$path; else throw new RuntimeException("This driver does not tư vấn retrieving local path"); sau đó, tôi tạo ra trải đời kéo vào form, mà lại nó vẫn không được hợp nhất vào lõi chính: https://github.com/laravel/framework/pull/13605 cũng có thể là ai kia vừa lòng độc nhất vô nhị mẫu này))


1
18 thg 5, 2016Ruslan Terekhov
Một phương án không giống tôi tìm thấy là:

Storage::disk("documents")->getDriver()->getConfig()->get("url")Sẽ trả lại url với đường dẫn cửa hàng của Lưu trữ tài liệu


1
19 thg 2, 2019Marc Garcia
Hãy xem loại này: Cách thực hiện Storage_path () để thấy hình hình ảnh vào laravel 4 . Điều tương tự như cũng vận dụng đến Laravel 5:

Lưu trữ giành cho khối hệ thống tệp cùng đa số nó cấp thiết truy vấn được đối với máy chủ web. Giải pháp được khuyến cáo là lưu trữ hình hình ảnh ở chỗ nào kia trong thư mục chỗ đông người (là thư mục nơi bắt đầu của tài liệu), ví dụ vào public/screenshots/. Sau đó, Lúc bạn có nhu cầu hiển thị bọn chúng, hãy thực hiện asset("screenshots/1.jpg").


1
10 thg 3, 2015nXu
Không có khóa mã hóa áp dụng như thế nào được chỉ định

Cách bao gồm tệp CSS cùng CSS bên ngoài vào Laravel 5

Không search thấy lớp "Ứng dụnghttpBộ điều khiểnDB" với tôi cũng tất yêu áp dụng Mẫu mới

làm cố gắng nào để sở hữu được toàn bộ đầu vào của POST ở Laravel 5

Yêu cầu nhận được đường truyền hiện nay với chuỗi truy vấn vấn

Cách thực hiện Thủ tục tàng trữ từ Laravel

laravel 5.2 tệp nhật ký kết thiết lập cấu hình cho những tác vụ khác nhau

Cách biến hóa thư mục chỗ đông người thành public_html vào laravel 5

Auth 5 new auth: Nhận người tiêu dùng hiện thời với cách triển khai vai trò?

CRUD Laravel 5 có tác dụng cố nào nhằm links để tiêu diệt Sở tinh chỉnh và điều khiển tài nguyên?

Laravel 5 có tác dụng vắt như thế nào để có được tên hành động con đường đường?

Xuất CSV trong cỗ tinh chỉnh laravel 5

Cách call công dụng tinh chỉnh vào chính sách xem trong laravel 5

NotFoundHttpException vào RouteCollection.php chiếc 161: trong laravel 5

Cách xóa một phiên bản ghi vào Laravel 5?

Lỗi lúc ban đầu proxy bạn dùng: nghe tcp0.0.0.0: 3306: bind: cửa hàng đã có được sử dụng

thêm màn hình vào laravel 5

Laravel 5.4: làm cụ như thế nào để lặp qua mảng yêu cầu?

Cách thực hiện IlluminateSupportStr :: slug in my Laravel 5 ứng dụng?

Cách gọi mô hình trong Laravel 5?