当我上传图片时,它会保存在/ web的默认文件夹中。我想将我的图像保存在用户定义的文件夹中。
答案 0 :(得分:2)
如果它是一个用户定义的文件夹,很有可能你必须动态创建目录,UploadedFile方法不能这样做。对于Yii2,我会在" yii \ helpers \ BaseFileHelper"中使用createDirectory()方法。类。 例如:
use yii\web\UploadedFile;
use yii\helpers\BaseFileHelper;
$model->uploaded_file = UploadedFile::getInstance($model, 'uploaded_file');
$unique_name = uniqid('file_');
$model->file_type = $model->uploaded_file->extension;
$model->file_name = $unique_name.'.'.$model->file_type;
$model->file_path = 'uploads/projects/'. $project_id;
BaseFileHelper::createDirectory($model->file_path);
$model->uploaded_file->saveAs($model->file_path .'/'. $model->file_name);
$model->save();
答案 1 :(得分:0)
如果您使用模型/活动表单提交表单(上传图片),这样的事情应该可以完成。关键部分是saveAs,其中第一个参数可以是文件路径。这也包括Yii Aliases。
if (\Yii::$app->request->isPost) {
$model->load(\Yii::$app->request->getBodyParams());
$file = \yii\web\UploadedFile::getInstance($model, 'image');
$file->saveAs('path/to/file');
}
同时深入了解UploadedFile课程。
答案 2 :(得分:0)
//yii 1.1 example
if($file=CUploadedFile::getInstanceByName("Shorty[avatar]"))
{
$basepath = preg_replace('~([\\\]|[\/])protected~s','',Yii::app()->basePath);
$filename = $basepath ."/images/shorty_images/" . $shorty_model->id . "/";
if(!file_exists($filename))
if(!mkdir($basepath ."/images/shorty_images/" . $shorty_model->id, 0777, true))
throw new CHttpException(404,'Directory create error!');
$status = $file->saveAs($filename . iconv("UTF-8", "ASCII//IGNORE", $file->name));
}
Yii 2:http://www.yiiframework.com/doc-2.0/yii-web-uploadedfile.html
答案 3 :(得分:0)
最好的方法是使用yii2文件包。 https://github.com/trntv/yii2-file-kit 更多功能
答案 4 :(得分:-1)
\Yii::$app->basePath
对应于您的应用程序文件夹,例如\myapp\backend\
。因此,如果您想将其保存到myapp\backend\data
,请将其保存为
$file = \yii\web\UploadedFile::getInstance($model, 'logo');
$file->saveAs(\Yii::$app->basePath . '/data/'.$file);
答案 5 :(得分:-1)
if ($model->load(Yii::$app->request->post())) {
$model->password=md5($model->password);
$model->photo = UploadedFile::getInstance($model, 'photo');
if($model->validate()){
$model->photo->saveAs('uploads/' . $model->photo->baseName . '.' . $model->photo->extension);
$model->save();
return $this->redirect(['index']);
}
}
它将我的图像保存在网络/上传文件夹中。