我目前正在尝试上传图片并将文件名保存在数据库中。该表称为图像,它只有3个变量,ID图像和listing_ID。当我尝试保存时,我没有收到错误,图像被重命名和上传,但我没有在桌面上输入。我想这可能是因为我保存图像的php文件位于我的根目录(受保护文件夹之外),但我可能错了。任何人都可以对此有所了解或如何解决这个问题?
本地网址是:mylocalmachine / index.php / listings / upload_images / 1 listing_ID:1;
php code:http://pastie.org/9770341
该文件只是重命名图像以进行保存,并且应该在图像表中连续输入。
<?php
$output_dir = "uploads/";
if(isset($_FILES["myfile"]))
{
$ret = array();
$error =$_FILES["myfile"]["error"];
{
if(!is_array($_FILES["myfile"]['name'])) //single file
{
$RandomNum = time();
$ImageName = str_replace(' ','-',strtolower($_FILES['myfile']['name']));
$ImageType = $_FILES['myfile']['type']; //"image/png", image/jpeg etc.
$ImageExt = substr($ImageName, strrpos($ImageName, '.'));
$ImageExt = str_replace('.','',$ImageExt);
$ImageName = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);
$NewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir. $NewImageName);
//echo "<br> Error: ".$_FILES["myfile"]["error"];
$ret[$fileName]= $output_dir.$NewImageName;
$image_entry = new Images;
$image_entry->image = $NewImageName;
$image_entry->listing_ID = $listing_ID;
$image_entry->save();
}
else
{
$fileCount = count($_FILES["myfile"]['name']);
for($i=0; $i < $fileCount; $i++)
{
$RandomNum = time();
$ImageName = str_replace(' ','-',strtolower($_FILES['myfile']['name'][$i]));
$ImageType = $_FILES['myfile']['type'][$i]; //"image/png", image/jpeg etc.
$ImageExt = substr($ImageName, strrpos($ImageName, '.'));
$ImageExt = str_replace('.','',$ImageExt);
$ImageName = preg_replace("/\.[^.\s]{3,4}$/", "", $ImageName);
$NewImageName = $ImageName.'-'.$RandomNum.'.'.$ImageExt;
$ret[$NewImageName]= $output_dir.$NewImageName;
move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$NewImageName );
$url = $_SERVER['REQUEST_URI'];
$exploded_url = explode('/',$url);
$listing_ID = end($exploded_url);
$image_entry = new Images;
$image_entry->image = $NewImageName;
$image_entry->listing_ID = $listing_ID;
$image_entry->save();
}
}
}
echo json_encode($ret);
}
?>
答案 0 :(得分:1)
如果您调用save()
,它将运行验证并在失败时返回false。
你必须相应地检查一个行为的返回值。以下代码将在验证失败的情况下打印所有验证错误:
if (!$image_entry->save()) {
print_r($image_entry->getErrors();)
}
答案 1 :(得分:1)
可能你的模型没有通过验证
使用
$image_entry->validate();
检查验证结果 (返回boolean是否验证成功且没有任何错误。)
使用
$image_entry->getErrors()
获取验证错误数组
或使用
$image_entry->save(false);
保存而不进行验证
答案 2 :(得分:0)
$ fileName未设置。它应该是$ ret ['fileName'] = $ output_dir。$ NewImageName;