我需要在storage / app / folder / file.ex中加载我的文件,然后使用Storage。但是图像源有问题。
<img src="{{ \Illuminate\Support\Facades\Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix() . $article->singer_id . '\\' . $article->img}}" >
我该如何解决这个问题?
答案 0 :(得分:0)
如果要在视图中使用图像,则应首先将其移动到public
目录(或其中一个子目录)。
然后你可以使用它:
<img src="{{ asset('img/'.$article->img) }}">
此外,请确保您具有正确的Apache配置,并且它指向public directory of a Laravel project. For example, if you've uploaded your Laravel projecy to a
c:/ wamp / www`,请使用以下设置:
DocumentRoot "C:/wamp/www/public"
<Directory "C:/wamp/www/public">
答案 1 :(得分:0)
我个人也喜欢将我的图像保存在存储文件夹中,原因有很多:
要使它们可访问,您需要通过某种ImageController发送请求。这需要能够做至少两件事:
第一部分我留给你。我的代码实际上使用数据库表来存储图像信息,并使用实际图像文件进行大量操作来调整大小和填充内容。
实际发送图像有点复杂,因为您需要考虑一些缓存处理,所以让我分享一下我如何处理:
protected function sendImage(FilesystemAdapter $storage, $file)
{
$data = $storage->get($file);
$response = response($data)
->header('Content-Type', $storage->mimeType($file));
// Cache for 5 HOURS
$response->setExpires(Carbon::createFromTimestamp(time() + (60*60*5)));
//header('Last-Modified: ' . $lastModified);
$response->setLastModified(Carbon::createFromTimestamp($storage->lastModified($file)));
//header('ETag: ' . $eTag);
// https://en.wikipedia.org/wiki/HTTP_ETag
$response->setEtag(md5($data));
$notModified = false;
$lastModified = $response->getLastModified();
$modifiedSince = \Request::header('If-Modified-Since');
if (!is_null($modifiedSince)) {
// Check the etag header
if ($etags = \Request::header('etag')) {
$notModified = in_array($response->getEtag(), $etags) || in_array('*', $etags);
}
// Check if the image is not modified since the latest cache
if ($modifiedSince && $lastModified) {
$notModified = strtotime($modifiedSince) >= $lastModified->getTimestamp() && (!$etags || $notModified);
}
// If so, send a 'not modified' response
if ($notModified) {
$response->setNotModified();
}
}
return $response;
}
希望这会有所帮助。随意请求进一步解释。