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

So laden Sie Bilder in thinkphp hoch

WBOY
Freigeben: 2023-05-29 11:06:23
nach vorne
1720 Leute haben es durchsucht

Schritt 1: Notwendige Parameter konfigurieren

In der Konfigurationsdatei config.php müssen Sie den Upload-Dateipfad festlegen Begrenzen Sie zunächst Parameter wie Bildgröße und Dateityp. 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 Bilder mithilfe von implementieren Funktion zum Hochladen von Klassen hochladen. Importieren Sie zunächst 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 das Bild im Controller aufrufen Hochladen Geben Sie den Code ein und erhalten Sie das Upload-Ergebnis:

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

Schließlich müssen wir nur noch Ajax auf der Front-End-Seite verwenden, um die Bilddatei 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(&#39;submit&#39;, &#39;#image-form&#39;, function (event) {
    event.preventDefault(); 
    var formData = new FormData(document.getElementById(&#39;image-form&#39;));
    $.ajax({
        url: &#39;/uploadImage&#39;,
        type: &#39;post&#39;,
        data: formData,
        contentType: false,
        processData: false,
        dataType: &#39;json&#39;,
        success: function (res) {
            //处理上传结果
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
});
</script>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
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