我想使用随机名称重命名图像。我必须使用一些逻辑加密吗?
我的Controller postAdd中具有该功能,可以上传图像并保存一些信息:
public function postAdd()
{
$path = 'uploads/noticias';
$file = Input::file('archivo');
$archivo=$file->getClientOriginalName();
$extension =$file->getClientOriginalExtension();
$tamano=$file->getSize();
$upload = $file->move($path, $archivo);
if($upload)
{
$inputs=Input::All();
$n= new Noticias;
$n->titulo = $inputs["titulo"];
$n->contenido=$inputs["contenido"];
$n->seo_slug=$inputs["titulo"];
$n->fecha=date("Y-m-d");
$n->foto=$archivo;
$n->save();
return Redirect::to('add');
}else
{
return Redirect::to('add');
}
}
我该怎么做?
文件名也应包含扩展名。
要创建文件名,请生成随机字符串并从上传的文件中添加扩展名。最好减小字符的大小写(或执行upprecase,但保持不变)。在我为您发布的示例中,我使用value
function,该函数返回传入的内容的结果-在这种情况下,我传递匿名函数,该函数生成文件名。
public function postAdd()
{
$path = 'uploads/noticias';
$file = Input::file('archivo');
$archivo = value(function() use ($file){
$filename = str_random(10) . '.' . $file->getClientOriginalExtension();
return strtolower($filename);
});
$tamano = $file->getSize();
$upload = $file->move($path, $archivo);
if($upload) {
$inputs=Input::All();
$n= new Noticias;
$n->titulo = $inputs["titulo"];
$n->contenido=$inputs["contenido"];
$n->seo_slug=$inputs["titulo"];
$n->fecha=date("Y-m-d");
$n->foto=$archivo;
$n->save();
return Redirect::to('add');
} else {
return Redirect::to('add');
}
}
注释中要求的解释...
值函数:
显然,它不是本机PHP函数。它是Laravel的辅助功能之一-此处的信息。
这是它的来源。如果传递了闭包,则它执行闭包(匿名函数),或者仅返回传递的值(值)。
/**
* Return the default value of the given value.
*
* @param mixed $value
* @return mixed
*/
function value($value)
{
return $value instanceof Closure ? $value() : $value;
}
我选择使用它来使代码更具可读性。$filename
闭包内部使用的变量被修改并返回-闭包外部不需要任何内容。
另外,您可以$filename
在postAdd
函数范围内使用变量,并且它们不能混合使用,不可能偶然地覆盖其值,依此类推...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句