Heim > PHP-Framework > Denken Sie an PHP > So laden Sie Bilder in thinkphp hoch

So laden Sie Bilder in thinkphp hoch

PHPz
Freigeben: 2023-04-11 13:56:14
Original
1389 Leute haben es durchsucht

In der Webentwicklung wird das Hochladen von Bildern oft als eine der notwendigen Funktionen angesehen, und ThinkPHP, ein auf PHP basierendes Open-Source-Framework, bietet eine Vielzahl von Methoden zum Implementieren der Funktion zum Hochladen von Bildern. Im Folgenden stellen wir eine Implementierungsmethode zum Hochladen von Bildern vor, die auf ThinkPHP basiert.

Schritt 1: Notwendige Parameter konfigurieren

In der Konfigurationsdatei config.php müssen wir zunächst Parameter wie Upload-Dateipfad, Bildgrößenbeschränkung und Dateitypbeschränkung konfigurieren. Die spezifische Konfiguration ist wie folgt:

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

Schritt 2: Schreiben Sie den Bild-Upload-Code

In ThinkPHP können wir die Bild-Upload-Funktion mithilfe der Upload-Klasse implementieren. Importieren Sie zuerst die Upload-Klasse:

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];
    }
}
Nach dem Login kopieren

Schritt 3: Rufen Sie den Bild-Upload-Code auf

Als nächstes können wir den Bild-Upload-Code im Controller aufrufen und das Upload-Ergebnis erhalten:

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

Schließlich müssen wir nur noch den Bild-Upload aufrufen Code auf der Front-End-Seite Verwenden Sie Ajax, um Bilddateien auf den Server hochzuladen:

<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>
Nach dem Login kopieren

Zusammenfassend wurde durch die obigen Schritte die auf ThinkPHP basierende Bild-Upload-Funktion abgeschlossen.

Das obige ist der detaillierte Inhalt vonSo laden Sie Bilder in thinkphp hoch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage