上传图片到 Laravel-Lumen API
Posted
技术标签:
【中文标题】上传图片到 Laravel-Lumen API【英文标题】:Upload Images to Laravel-Lumen API 【发布时间】:2018-06-11 11:20:52 【问题描述】:使用我的 API,我需要将图像从移动应用程序上传到我的服务器并将图像路径保存到数据库,所以我遇到了以下问题:
在哪里保存图像?我试图将它们保存在存储/应用程序中 在 images 文件夹下(工作正常)
public function fileUpload(Request $request)
if ($request->hasFile('image'))
$image = $request->file('image');
$name = time().'.'.$image->getClientOriginalExtension();
$destinationPath = storage_path('/app/images');
$image->move($destinationPath, $name);
return response()->json(['data'=>"image is uploaded"]);
并在公用文件夹中创建指向此文件夹的符号链接,但其 由于访问权限错误而无法工作,这将导致 其他问题。
我应该给存储文件夹什么权限才能制作完整 操作可以保存图像并且保存的链接是可读的(即使777不起作用)禁止访问!
sudo chmod -R 777 存储
任何想法将不胜感激
【问题讨论】:
你试过755
吗?
是的,效果不佳
试试chmod -R 0777 storage
(通知0777)。也可以试试php artisan storage:link
。
php artisan storage:link
command not found 在“storage”命名空间中没有定义命令。
【参考方案1】:
存储目录不向用户请求开放,公共目录是,您需要创建一个从存储目录到公共目录的符号链接:
php artisan storage:link
此命令将创建一个从public/storage
到storage/app/public
的符号链接,在这种情况下,您可以将文件存储在storage/app/public
下并使其也可以从网络访问:
$image = $request->file('image');
$image->storeAs('public', $name); // => storage/app/public/file.img
URL::asset('storage/'.$name); // => http://example.com/stoage/file.img
【讨论】:
php artisan storage:link
command not found 在“storage”命名空间中没有定义命令。
我觉得lumen不支持这个命令,它是laravel的轻量级版本,你可以手动创建符号链接ln -s storage/app/public public/storage
或者你可以创建images
文件夹在公共目录下,并将其所有者更改为Web服务器用户www-data
:chown -R www-data:your_user images
,然后将上传的文件存储在图像目录下,如下所示:$image->storeAs('images', $name);
感谢您的回答和 cmets,这是 lumen 的问题,文件系统功能不存在 $image->storeAs('images', $name)
将通过目标 [Illuminate\Contracts\Filesystem\Factory] 无法实例化,甚至 base_path( )在流明中无效,这就是为什么我询问保存图像的最佳文件夹
对于 windows 用户,这个link 展示了如何使用mklink
命令手动创建符号链接【参考方案2】:
我建议您尝试在公用文件夹中创建一个文件夹并将您的文件存储在那里。你可以使用 base_path()."/public/uploads"
【讨论】:
【参考方案3】:存储图像的最佳位置是在 storage 文件夹中,并在 public 文件夹中创建一个符号链接。
sudo chmod -R 777 storage
应该可以工作。确保您访问的是正确的网址。
要访问图像,您应该使用以下网址。我的文件夹结构看起来像 /storage/app/public/images/user/avatar/
本地:http://localhost/project-name/public/storage/images/user/avatar/HdXzVnKxzUSdAssvXaoM2n0ixzEEG7jlK8acLiHV.png
制作:http://example.com/storage/images/user/avatar/3133L07guCv8shINNZM30c2Ux1HdfpFt04YdLRpf.png
您可以查看此要点以确定您是否遗漏了什么:https://gist.github.com/danish-shaikh/9c328288a817309f93238c6b5d48ed7e
【讨论】:
以上是关于上传图片到 Laravel-Lumen API的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Marketing API:将图片上传到库提供了一个 URL
ueditor上传图片到七牛云存储(form api,java)
Shopify API Python 使用 Python API 上传多张图片