Yii - Tải lên tệp
Bạn có thể dễ dàng triển khai chức năng tải lên tệp với sự trợ giúp của yii\web\UploadedFile, models và yii\widgets\ActiveForm.
Tạo một thư mục ‘uploads’trong thư mục gốc. Thư mục này sẽ chứa tất cả các hình ảnh đã tải lên. Để tải lên một tệp, bạn cần tạo một mô hình và một thuộc tính của mô hình cho phiên bản tệp đã tải lên. Bạn cũng nên xác nhận việc tải lên tệp.
Step 1 - Bên trong models thư mục, tạo một tệp có tên UploadImageForm.php với nội dung sau.
<?php
namespace app\models;
use yii\base\Model;
class UploadImageForm extends Model {
public $image; public function rules() { return [ [['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'jpg, png'], ]; } public function upload() { if ($this->validate()) {
$this->image->saveAs('../uploads/' . $this->image->baseName . '.' .
$this->image->extension);
return true;
} else {
return false;
}
}
}
?>
Các imagethuộc tính được sử dụng để giữ cá thể tệp. Cácfile quy tắc xác thực đảm bảo rằng một tệp có png hoặc một jpgsự mở rộng. Các upload chức năng xác nhận các tập tin và lưu nó trên máy chủ.
Step 2 - Bây giờ, thêm actionUploadImage chức năng của SiteController.
public function actionUploadImage() {
$model = new UploadImageForm();
if (Yii::$app->request->isPost) { $model->image = UploadedFile::getInstance($model, 'image'); if ($model->upload()) {
// file is uploaded successfully
echo "File successfully uploaded";
return;
}
}
return $this->render('upload', ['model' => $model]);
}
Step 3 - Khi biểu mẫu được gửi, chúng tôi gọi yii\web\UploadedFile::getInstance() chức năng đại diện cho tệp được tải lên dưới dạng UploadedFileví dụ. Sau đó, chúng tôi xác thực tệp và lưu nó trên máy chủ.
Step 4 - Tiếp theo, tạo một upload.php xem tệp bên trong views/site danh mục.
<?php
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']])?> <?= $form->field($model, 'image')->fileInput() ?>
<button>Submit</button>
<?php ActiveForm::end() ?>
Hãy nhớ thêm enctype khi bạn tải lên một tệp. The fileInput() phương thức hiển thị mã html sau:
<input type = "file">
Đoạn mã html trên cho phép người dùng chọn và tải tệp lên.
Step 5 - Bây giờ, nếu bạn đi đến http://localhost:8080/index.php?r=site/upload-image, bạn sẽ thấy như sau.
Step 6- Chọn một hình ảnh để tải lên và nhấp vào nút "gửi". Tệp sẽ được lưu trên máy chủ bên trong‘uploads’ thư mục.