0

我正在尝试上传文件,但收到此错误消息:

 move_uploaded_file() [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: The second argument to copy() function cannot be a directory 

我认为这个文件有问题,但我不知道如何解决它..

    <?php


    class FileUploadController extends CController {


    public function actionUpload() {
        $model = new FileUpload();
    $form = new CForm('application.views.fileUpload.uploadForm', $model);
        if ($form->submitted('submit') && $form->validate()) {
            $form->model->image = CUploadedFile::getInstance($form->model, 'image');


                  if($model->validate())
            {
                $model->image->saveAs('/opt/lampp/htdocs/upl/images');

            Yii::app()->user->setFlash('success', 'File Uploaded');
            $this->redirect(array('upload'));
            }


        }
        $this->render('upload', array('form' => $form));
    }
}

?>
4

3 回答 3

2

您要么需要检查存在的所有文件'/opt/lampp/htdocs/upl/images'并检查是否存在相同的命名文件,如果可用,则只需每次使用额外的“_1”重命名文件,或者您始终可以通过将文件重命名到某些机器来上传文件名称之类的东西见下面的代码,

$name = rand(1000,9999) . time(); // rand(1000,9999) optional
$name = md5($name); //optional
$model->image->saveAs('/opt/lampp/htdocs/upl/images/' . $name . '.jpg');

这是我通常对文件上传所做的事情,前提是您将文件引用保存到数据库或任何文本文件中。

编辑

获取扩展。

如果您需要获取文件的扩展名而不是硬编码,您可以使用$model->image->getExtensionName();它来获取上传文件的扩展名,而无需.(点)

于 2013-07-19T03:39:15.607 回答
1

最后,我自己解决了:

问题位于行

$model->image->saveAs('/opt/lampp/htdocs/upl/images');

它应该是 :

$model->image->saveAs('/opt/lampp/htdocs/upl/images/images.jpg');

现在,还有另一个问题:当我上传“新图片”时,它将替换旧文件,我希望上传的文件不替换旧文件,或者我需要重命名为新文件。有人知道吗?

于 2013-07-19T03:14:45.950 回答
0

转到 cuploadedfile.php 。用这个重写这个函数

if($this->_error==UPLOAD_ERR_OK)
{
    if($deleteTempFile)
        return move_uploaded_file($this->_tempName,$file."/".$this->getName());
    elseif(is_uploaded_file($this->_tempName))
        return copy($this->_tempName, $file."/".$this->getName());
    else
        return false;
}

感谢你.........

于 2014-04-02T05:35:04.420 回答