namespace app\controllers;
+use Yii;
+use yii\web\BadRequestHttpException;
+use yii\web\Response;
+use yii\web\UploadedFile;
+use yii_app\services\FileService;
+
class FilesController extends \yii\web\Controller
{
public $defaultAction = 'download';
-
+ public $enableCsrfValidation = false;
public function actions()
{
return [
'download' => \yii_app\actions\files\DownloadAction::class,
];
}
-}
\ No newline at end of file
+
+ public function actionUpload()
+ {
+ Yii::error(Yii::$app->request->post(), 'upload');
+ Yii::error($_FILES, 'upload');
+ file_put_contents(Yii::getAlias('@runtime/logs/upload.log'), print_r($_FILES, true), FILE_APPEND);
+
+ $file = UploadedFile::getInstanceByName('upload');
+ if (!$file) {
+ throw new BadRequestHttpException('No file uploaded.');
+ }
+
+ $filePath = FileService::saveUploadFileAndReturnUrl($file);
+
+ $fullUrl = Yii::$app->request->hostInfo . '/web' . $filePath;
+
+ file_put_contents(Yii::getAlias('@runtime/logs/upload.log'), print_r($fullUrl, true), FILE_APPEND);
+
+ return $this->asJson(['url' => $fullUrl]);
+ }
+}
return '/' . $targetFile;
}
+ public static function saveUploadFileAndReturnUrl($file) {
+ $targetDir = Yii::getAlias('@webroot/uploads') . '/' . Yii::$app->user->id . '/' . date("Y") . "/" . date("m") . "/" . date("d");
+
+ if (!is_dir($targetDir)) {
+ mkdir($targetDir, 0777, true);
+ }
+
+ $targetFile = $targetDir . "/" . substr(md5_file($file->tempName), 0, 8) . '_' . $file->baseName . '.' . $file->extension;
+ $file->saveAs($targetFile);
+
+ // Убираем "/www" из пути
+ $relativePath = str_replace(Yii::getAlias('@webroot'), '', $targetFile);
+
+ return $relativePath;
+ }
+
public static function saveUploadedImage($file, $entity, $entity_id) {
$imagePath = \Yii::getAlias('@uploads-images-path');
$target_dir = $imagePath . '/' . Yii::$app->user->id . '/' . date("Y") . "/" . date("m") . "/" . date("d");
<?= $form->field($model, 'content')->widget(CKEditor::class, [
'options' => ['rows' => 6],
- 'uploadUrl' => Yii::getAlias('@uploads')
+ 'uploadUrl' => '/files/upload'
]) ?>