【发布时间】:2021-08-27 20:10:49
【问题描述】:
嘿,昨天我终于把我的网站上传到了一个主机上,我跟着一个视频上传了它。所以我在 public_html 之外创建了一个单独的文件夹来保存不属于 public 文件夹的文件,并且在 public_html 上我从 public 文件夹中删除了文件!现在,当我尝试上传图片时,总是出现错误“照片上传失败。”,但这只发生在某些图片上,而不是全部,我不知道为什么!我试图禁用验证,但给了我同样的错误,所以我不认为这进入验证反正。
来自一个控制器的我的控制器代码:
public function store(ParceiroPost $request)
{
$validated_data = $request->validated();
$newParceiro = new Parceiros();
$newParceiro->nome = $validated_data['nome'];
$newParceiro->url_parceiro = $validated_data['link'];
if ($request->hasFile('foto')) {
$image = $request->file('foto');
$input['imagename'] = time().'_'.$newParceiro->nome.'.png';
$destinationPath = public_path('storage/parceiros');
$img = Image::make($image->path());
$img->resize(1280, 868)->save($destinationPath.'/'.$input['imagename']);
$newParceiro->foto_url = $input['imagename'];
}
$newParceiro->save();
return redirect()->route('admin.parceiros')
->with('alert-msg', 'Parceiro " '. $request->nome .' " foi criado com sucesso!')
->with('alert-type', 'success');
}
发生在这里,我以不同的方式保存它:
public function store(StaffPost $request)
{
$validated_data = $request->validated();
$newUser = new User;
$newUser->email = $validated_data['email'];
$newUser->name = $validated_data['nome'];
$newUser->tipo = $validated_data['tipo'];
$newUser->password = Hash::make($validated_data['password']);
if ($request->hasFile('foto')) {
$path = $request->foto->store('fotos_perfil');
$newUser->foto_url = basename($path);
}
$newUser->save();
$newUser = User::where('email', $validated_data['email'])->first();
//dd($newUser);
$newUser->markEmailAsVerified();
return redirect()->route('admin.staff')
->with('alert-msg', 'Staff " '. $newUser->name .' " foi criado com sucesso!')
->with('alert-type', 'success');
}
验证:
public function rules()
{
if(request()->isMethod('put')) // could be patch as well
{
return [
'nome' => 'required',
'foto' => 'image|max:8192', // Máximum size = 8Mb
'link' => 'nullable', // Máximum size = 8Mb
];
}
else
{
return [
'nome' => 'required',
'foto' => 'image|max:8192|required', // Máximum size = 8Mb
'link' => 'nullable',
];
}
}
我认为这必须与 php 有关,因为如果我注释所有代码并让返回,无论如何都会抛出错误。
这只是发生在一些图像上,我不知道为什么,因为当我在本地主机上时,我可以上传这些图像,但是当我在网站上时,我不能
解决方案:
这是我第一次托管一个网站,所以我不知道文件 php.ini 中存在一些限制上传大小的变量!为此,我更改了这些变量的值,以便上传更大的文件。
【问题讨论】:
-
您在存储文件夹路径中存储图像时出错?因为你定义了 $destinationPath = public_path('storage/parceiros');像这样。所以请确认您要存储图像的位置。公共路径还是存储路径?
-
你遇到了什么错误?
-
请告诉我您想在哪里存储图像...存储路径还是公共路径?所以我可以更好地帮助你
-
@HarshPatel 不,因为我在公共文件夹上有一个指向存储路径的超链接,这发生在另一个控制器上,我以不同的方式保存
-
您的 php.ini 或 nginx/appache 的上传最大大小是否可能过低?通常这个设置为2MB,如果你上传的图片太大的话apache/nginx或者php会失败而不是你的程序。