]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
загрузка файлов
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 11 Feb 2025 14:38:34 +0000 (17:38 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 11 Feb 2025 14:38:34 +0000 (17:38 +0300)
erp24/controllers/FilesController.php
erp24/services/FileService.php
erp24/views/wiki/_form.php

index 35b29e5c012d3c74c1e166c48c944164b84e543d..2ae4f48e30f9f84e865af52d2ef42481db120e12 100755 (executable)
@@ -4,14 +4,40 @@ declare(strict_types = 1);
 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]);
+    }
+}
index 31bee4fddb32c98f2334b221237d515fdfdcbdac..3ea5a60953ee2ad3b35ca2af961a2ac4e87390f1 100755 (executable)
@@ -161,6 +161,22 @@ class FileService
         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");
index cf965f11c6983f25a1674c5d256b53e30c40f065..8844bf7ac6ac82d8134908d120ff9bfd05c3e2c0 100644 (file)
@@ -47,7 +47,7 @@ $categoryList = getCategoriesWithHierarchy($categories);
 
     <?= $form->field($model, 'content')->widget(CKEditor::class, [
         'options' => ['rows' => 6],
-        'uploadUrl' => Yii::getAlias('@uploads')
+        'uploadUrl' => '/files/upload'
     ]) ?>