关于上传图片的一些思路
我们在添加文章时,除了文章标题,内容等,也需要给文章添加缩略图,此时对于图片的存储方式与顺序,有以下两种思路:
1、在点击上传图片后就将图片传入服务器,在填写好文章,提交文章内容时将图片路径一起保存到数据库
2、点击上传图片后,程序并未真正进行上传操作,只是拿到图片预计存储路径。填写好文章,提交文章内容时进行以下工作
一个是图片真正上传到服务器,同时文章内容及图片存储路径也存到数据库对应的表中去。
方法一的缺点是用户可能在上传完图片后,并未继续选择保存文章而离开页面,此时已经上传的图片却已保存到服务器中,如果恶意发生,会导致服务器上存在太多垃圾图片
方法二的优点则是避开了方法一的缺陷。
但是鉴于目前我们硬盘资源的成本较低,目前在开发过程中,选择方法一。所有用户上传过的图片可与用户名称对应出来,比较好的体验是,用户在上传图片的过程中,可看到之前上传过的图片,并从中进行选择,这样避免了将重复的图片进行二次上传。
分享一些上传图片的代码:
laravel php 部分:
//将上传过来的图片存到指定的文件夹
public function imageupload(Request $request){
$year=date("Y");
$month=date("m");
$targetFolder = $_SERVER['DOCUMENT_ROOT'].'/uploads/'.$year.$month.'/';
if(!is_dir($targetFolder)){
mkdir($targetFolder,0777,true);
}
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = '/uploads/'.$year.$month.'/'. $request->input('name');
$targetFile = rtrim($targetFolder,'/') . '/' . $request->input('name');
if(move_uploaded_file($tempFile,$targetFile)){
$path = array();
$path[0] = $targetPath;
echo json_encode($path);
//把图片路径存储到数据库
}else{
echo "0";
}
}
相关前台添加图片部分,可参考h-ui后台管理中图片管理中的添加图片部分。