图像不会在文件夹路径中移动
Image dose not move at folder path
我已经将 777 permission
放入我的 images
文件夹。 Charts Table
也正在保存图像的所有记录。我要在这里附上 table:charts
结构。
public function store(Request $request)
{
$input = $request->all();
$tradeID= Auth::user()->trade()->create($input);
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$file->move('images', $name);
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$tradeID->chart()->create($input);
}
您是要移动上传的文件还是现有文件?
要移动文件,您需要执行以下操作:
File::move($oldPath, $newPath);
旧路径和新路径应包括带文件名(和扩展名)的完整路径
要存储上传的文件,您需要执行以下操作:
Storage::disk('diskname')->put($newPath, File::get($file));
新路径是包含文件名(和扩展名)的完整路径。
- 磁盘是可选的,你可以直接存储文件
Storage::put()
..
- 磁盘位于
config/filesystems.php
File::get($file)
, $file
是你从 post 请求 $file = $request->file('file')
输入的,基本上它获取上传文件的内容。
UPD#1
好的,你可以这样做:
$request->file('file')->store(public_path('images'));
或存储 class:
// get uploaded file
$file = $request->file('file');
// returns the original file name.
$original = $file->getClientOriginalName();
// get filename with extension like demo.php
$filename = pathinfo($original)['basename'];
// get public path to images folder
$path = public_path('images');
// concat public path with filename
$filePath = $path.'/'.$filename;
// store uploaded file to path
$store = Storage::put($filePath, File::get($file));
尝试将目标路径从相对路径更改为绝对路径
public function store(Request $request)
{
$input = $request->all();
$tradeID= Auth::user()->trade()->create($input);
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$file->move( public_path() . '/images/', $name); // absolute destination path
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$tradeID->chart()->create($input);
}
试试这个
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$path = $file->storeAs('images', $name,'public');
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
您可以使用 /storage/public/file_name
或 /file_name
检索文件,具体取决于您告诉 laravel 存储 public 文件的位置
你实际上并不是在存储文件,你实际上是在移动一个不存在的文件。
您可能会考虑什么
您很可能想从 public 路径访问上传的文件。如果是这样,您应该将此文件存储到存储目录中的特定文件夹中,并在 public 路径中创建指向该目录的符号链接。
这是一个例子:
Storage::disks('public')->put($filename, $uploadedFile); // filename = 'images/imageFile.jpg'
这会在您的 storage/app/public/images
目录中创建一个文件。
然后,您可以创建一个符号链接,laravel提供一个简单的命令。
php artisan storage:link
这会创建一个符号链接到您的 public 磁盘。
然后,您可以在 http://your-site-server/storage/images/imageFile.jpg
访问图像
希望对您有所帮助。
$name = time().'.'. $file->getClientOriginalName(); //depends on ur requirement
$file->move(public_path('images'), $name);
我已经将 777 permission
放入我的 images
文件夹。 Charts Table
也正在保存图像的所有记录。我要在这里附上 table:charts
结构。
public function store(Request $request)
{
$input = $request->all();
$tradeID= Auth::user()->trade()->create($input);
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$file->move('images', $name);
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$tradeID->chart()->create($input);
}
您是要移动上传的文件还是现有文件?
要移动文件,您需要执行以下操作:
File::move($oldPath, $newPath);
旧路径和新路径应包括带文件名(和扩展名)的完整路径
要存储上传的文件,您需要执行以下操作:
Storage::disk('diskname')->put($newPath, File::get($file));
新路径是包含文件名(和扩展名)的完整路径。
- 磁盘是可选的,你可以直接存储文件
Storage::put()
.. - 磁盘位于
config/filesystems.php
File::get($file)
, $file
是你从 post 请求 $file = $request->file('file')
输入的,基本上它获取上传文件的内容。
UPD#1
好的,你可以这样做:
$request->file('file')->store(public_path('images'));
或存储 class:
// get uploaded file
$file = $request->file('file');
// returns the original file name.
$original = $file->getClientOriginalName();
// get filename with extension like demo.php
$filename = pathinfo($original)['basename'];
// get public path to images folder
$path = public_path('images');
// concat public path with filename
$filePath = $path.'/'.$filename;
// store uploaded file to path
$store = Storage::put($filePath, File::get($file));
尝试将目标路径从相对路径更改为绝对路径
public function store(Request $request)
{
$input = $request->all();
$tradeID= Auth::user()->trade()->create($input);
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$file->move( public_path() . '/images/', $name); // absolute destination path
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
$tradeID->chart()->create($input);
}
试试这个
if($file = $request->file('file'))
{
$name = time() . $file->getClientOriginalName();
$path = $file->storeAs('images', $name,'public');
$photo = Chart::create(['file'=>$name]);
$input['photo_id'] = $photo->id;
}
您可以使用 /storage/public/file_name
或 /file_name
检索文件,具体取决于您告诉 laravel 存储 public 文件的位置
你实际上并不是在存储文件,你实际上是在移动一个不存在的文件。
您可能会考虑什么 您很可能想从 public 路径访问上传的文件。如果是这样,您应该将此文件存储到存储目录中的特定文件夹中,并在 public 路径中创建指向该目录的符号链接。 这是一个例子:
Storage::disks('public')->put($filename, $uploadedFile); // filename = 'images/imageFile.jpg'
这会在您的 storage/app/public/images
目录中创建一个文件。
然后,您可以创建一个符号链接,laravel提供一个简单的命令。
php artisan storage:link
这会创建一个符号链接到您的 public 磁盘。
然后,您可以在 http://your-site-server/storage/images/imageFile.jpg
希望对您有所帮助。
$name = time().'.'. $file->getClientOriginalName(); //depends on ur requirement
$file->move(public_path('images'), $name);