Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk memuat naik gambar dalam thinkphp

Bagaimana untuk memuat naik gambar dalam thinkphp

PHPz
PHPzasal
2023-04-11 10:31:001335semak imbas

Dalam pembangunan Web, muat naik imej sering digunakan sebagai salah satu fungsi yang diperlukan, dan ThinkPHP, rangka kerja sumber terbuka berdasarkan PHP, menyediakan pelbagai kaedah untuk melaksanakan fungsi muat naik imej. Di bawah ini kami akan memperkenalkan kaedah pelaksanaan muat naik imej berdasarkan ThinkPHP.

Langkah satu: Konfigurasikan parameter yang diperlukan

Dalam fail konfigurasi config.php, kita perlu mengkonfigurasi parameter seperti laluan muat naik fail, had saiz imej dan had jenis fail terlebih dahulu. Konfigurasi khusus adalah seperti berikut:

return [
    'upload_path' => './uploads/', //上传文件路径
    'img_max_size' => 2 * 1024 * 1024, //最大上传图片大小
    'img_allow_types' => 'jpg,png,gif,jpeg', //允许上传的文件类型
];

Langkah 2: Tulis kod muat naik imej

Dalam ThinkPHP, kami boleh melaksanakan fungsi muat naik imej dengan menggunakan kelas muat naik. Mula-mula import kelas muat naik:

use think\facade\Request;
use think\facade\Filesystem;

class ImageUpload
{
    public function upload()
    {
        $img_file = Request::file('img'); //获取上传的图片文件
        $img_path = config('upload_path'); //获取上传路径
        $max_size = config('img_max_size'); //获取最大文件尺寸
        $allow_types = config('img_allow_types'); //获取允许上传的类型

        //判断上传文件是否有效、大小是否符合、类型是否正确
        if (!$img_file->isValid()) {
            return ['code' => 1, 'msg' => '上传图片无效'];
        }

        if ($img_file->getSize() > $max_size) {
            return ['code' => 2, 'msg' => '上传图片大小超过限制'];
        }

        if (!in_array($img_file->extension(), explode(',', $allow_types))) {
            return ['code' => 3, 'msg' => '上传图片类型不支持'];
        }

        //上传文件
        $file_info = $img_file->move($img_path);
        if ($file_info === false) {
            return ['code' => 4, 'msg' => '上传图片失败,请重试'];
        }

        //返回上传成功信息
        $file_name = $file_info->getSaveName();
        $file_url = Filesystem::getDiskConfig('public', ['url' => '/'])->getVisibility()->url($img_path . $file_name);
        return ['code' => 0, 'msg' => '上传图片成功', 'url' => $file_url];
    }
}

Langkah 3: Panggil kod muat naik imej

Seterusnya, kita boleh panggil kod muat naik imej dalam pengawal dan dapatkan hasil muat naik:

public function uploadImage()
{
    $result = (new ImageUpload())->upload();
    echo json_encode($result);
}

Akhir sekali, kita hanya perlu menggunakan ajax di halaman hadapan untuk memuat naik fail imej ke pelayan:

<form id="image-form" action="/uploadImage" method="post" enctype="multipart/form-data">
    <input type="file" id="img-file" name="img" accept="image/*">
    <button type="submit">上传</button>
</form>

<script>
$(document).on('submit', '#image-form', function (event) {
    event.preventDefault(); 
    var formData = new FormData(document.getElementById('image-form'));
    $.ajax({
        url: '/uploadImage',
        type: 'post',
        data: formData,
        contentType: false,
        processData: false,
        dataType: 'json',
        success: function (res) {
            //处理上传结果
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
});
</script>

Ringkasnya, melalui langkah di atas, imej berdasarkan ThinkPHP Fungsi muat naik selesai.

Atas ialah kandungan terperinci Bagaimana untuk memuat naik gambar dalam thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn