php - Laravel 中断开的符号链接
问题描述
我使用以下代码创建了一个表单来上传个人资料图片,
$image = $request->file('avatar');
$pass = Hash::make($request->password);
if($image!=null){
$avatar_name = $request->get('NIC').'.'.$image->getClientOriginalExtension();
$folder = '/uploads/avatars/';
// $filePath = $folder . $avatar_name;
$this->uploadOne($image, $folder, 'public', $avatar_name);
DB::table('users')->insert([
[
'avatar_id' => $avatar_name,
.
.
.
.
public function uploadOne(UploadedFile $uploadedFile, $folder = null, $disk = 'public', $filename = null)
{
$name = !is_null($filename) ? $filename : Str::random(25);
$path =storage_path('uploads/avatars/'.$filename.'');
if( Storage::exists($path)){
Storage::disk('public')->delete('uploads/avatars/'.$filename.'');
}
$file = $uploadedFile->storeAs($folder, $name, $disk);
return $file;
}
<form method="post" action="{{ route('edit_user.store') }}" enctype="multipart/form-data" autocomplete="off">
@csrf
<div class="pl-lg-4">
<input type="text" name="user_id_" id="input-user_id" hidden>
<fieldset name="Personal_information">
<legend class="heading-small text-muted mb-4" >Personal information</legend>
<div class="form-group{{ $errors->has('avatar') ? ' has-danger' : '' }}">
<label class="form-control-label" for="input-avatar">{{ __('Avatar') }}</label>
<input type="file" name="avatar" id="input-avatar" class="form-control form-control-alternative{{ $errors->has('avatar') ? ' is-invalid' : '' }}" >
@if ($errors->has('avatar'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('avatar') }}</strong>
</span>
@endif
</div>
现在我制作另一个页面来上传一些带有以下代码的文件,
$id = auth()->id();
$timestamp_=now()->toDateTimeString();
$doc = $request->file('leave_document');
if($doc!=null){
$leave_doc_name = $id.'_'.$timestamp_.'.'.$doc->getClientOriginalExtension();
$folder = '/uploads/leave_documents/';
$filePath = $folder . $leave_doc_name;
$this->uploadOne($doc, $folder, 'public', $leave_doc_name);
}else{
$leave_doc_name =null;
}
if($request->leave_id_=="add"){
DB::table('leave_requests')->insert([
[
'document_id'=>$leave_doc_name,
.
.
.
.
.
public function uploadOne(UploadedFile $uploadedFile, $folder = null, $disk = 'public', $filename = null)
{
$name = !is_null($filename) ? $filename : Str::random(25);
$path =storage_path('uploads/leave_documents/'.$filename.'');
if( Storage::exists($path)){
Storage::disk('public')->delete('uploads/leave_documents/'.$filename.'');
}
$file = $uploadedFile->storeAs($folder, $name, $disk);
return $file;
}
<form id="addEventForm" method="post" enctype="multipart/form-data" action="{{ route('leave.store') }}" autocomplete="off">
@csrf
<div class="pl-lg-4">
<input type="text" name="leave_id_" id="input-leave_id" hidden>
<div class="form-group{{ $errors->has('leave_document') ? ' has-danger' : '' }}">
<label class="form-control-label" for="input-leave_document">{{ __('Document') }}</label>
<input type="file" name="leave_document" id="input-leave_document" class="form-control form-control-alternative{{ $errors->has('leave_document') ? ' is-invalid' : '' }}" >
</div>
如您所见,两个代码是相同的。唯一的主要区别是存储文件夹。(第一个用户使用“\storage\app\public\uploads\avatars”文件夹,第二个用户使用“storage\app\public\uploads\leave_documents”文件夹。
但对于第二个,我收到一条错误消息
fopen(C:\xampp\htdocs\ACCHE_HR\storage\app/public\uploads/leave_documents/2_2020-03-15 19:31:14.jpg):无法打开流:没有这样的文件或目录
所以似乎符号链接仅适用于头像文件夹我尝试使用“rm public/storage”命令删除符号链接,它也给了我以下错误,
rm : C:\xampp\htdocs\ACCHE_HR\public\storage 是一个 NTFS 连接点。使用 Force 参数删除或修改此对象。在 line:1 char:1 + rm public/storage + ~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (C:\xampp\htdocs\ACCHE_HR\public\storage:DirectoryInfo ) [Remove-Item], IOException + FullyQualifiedErrorId : DirectoryNotEmpty,Microsoft.PowerShell.Commands.RemoveItemCommand
我到处搜索,还尝试找到一种创建自定义符号链接的方法,但失败了。我该如何解决这个问题,我也是 Laravel 的新手?
请帮忙!
解决方案
当我将文件名更改为这样的
$leave_doc_name = 'abc.'.$doc->getClientOriginalExtension();
从
$leave_doc_name = $id.'_'.$timestamp_.'.'.$doc->getClientOriginalExtension();
有用。
似乎时间戳功能不适用于文件上传。
推荐阅读
- python - Python Def函数结果,在Python中调用一个Class函数
- elasticsearch - 配置基于大小索引生命周期管理的删除索引策略弹性搜索
- php - 如何使用 codeigniter 3 创建验证邮件
- psd2 - Xs2a 支持自定义银行功能(银行特定支付、银行特定账户信息)
- python - Swift 接收字符串并在 Python 中运行
- python - str.strip() 错误,我的 strip 没有从我的 str 中删除所有引号
- python - numpy:数组数组乘以整数数组等于数组
- python - 如何在python中使用单词激活语音识别
- c++ - 什么是相关流程和不相关流程?
- python - 如何将字符串值绑定到列表中的每个元素