我正在尝试上传文件,但收到此错误消息:
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));
}
}
?>
答案 0 :(得分: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();
它将获得上传文件的扩展名,而不是.
(点)
答案 1 :(得分:1)
最后,我自己解决了这个问题:
问题位于行
$model->image->saveAs('/opt/lampp/htdocs/upl/images');
应该是:
$model->image->saveAs('/opt/lampp/htdocs/upl/images/images.jpg');
现在,还有另一个问题:当我上传'新图像'时,它将替换旧文件,我希望上传的文件不会替换旧文件,或者我需要重命名为新文件。有谁知道?
答案 2 :(得分: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;
}
谢谢你.........