>  기사  >  PHP 프레임워크  >  ThinkPHP6에서 파일 업로드 기능을 구현하는 방법

ThinkPHP6에서 파일 업로드 기능을 구현하는 방법

WBOY
WBOY원래의
2023-06-20 08:35:133761검색

인터넷이 지속적으로 발전함에 따라 점점 더 많은 웹사이트에서 파일 업로드 기능을 구현해야 합니다. ThinkPHP6에서는 파일 업로드 기능을 구현하는 것도 매우 간단합니다. 오늘은 ThinkPHP6에서 파일 업로드 기능을 구현하는 방법을 소개하겠습니다.

1. 파일 업로드 매개변수 구성

파일 업로드 기능을 구현하기 전에 먼저 ThinkPHP6의 구성 파일에서 파일 업로드 매개변수를 설정해야 합니다. 프로젝트의 구성 파일 config/app.php를 찾은 후 params 배열에 다음 코드를 추가합니다.

'upload' => [
    'maxSize' => 1024 * 1024 * 10, //文件上传的最大大小
    'exts' => ['jpg', 'gif', 'png', 'jpeg'], //允许上传的文件后缀
    'rootPath' => app()->getRootPath() . 'public/uploads/', //文件上传的根目录
    'savePath' => '', //文件保存的子目录
    'subName' => ['date', 'Ymd'], //子目录名称的命名规则
],

여기서 최대 파일 업로드 크기를 10MB로 설정했으며 업로드할 수 있는 파일 접미사는 jpg, gif, png입니다. , jpeg 형식이며, 파일 업로드를 위한 루트 디렉토리는 public/uploads/이며, 하위 디렉토리의 명명 규칙은 날짜(년, 월, 일)로 명명되도록 설정됩니다.

2. 파일 업로드 기능 구현

파일 업로드 매개변수를 구성한 후 파일 업로드 기능 구현을 시작할 수 있습니다. 컨트롤러에 다음 코드를 작성합니다.

public function upload()
{
    $file = request()->file('image');
    if ($file) {
        $info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move(config('upload.rootPath'));
        if ($info) {
            $data = [
                'code' => 0,
                'msg' => '上传成功',
                'url' => config('upload.rootPath') . $info->getSaveName(),
            ];
        } else {
            $data = [
                'code' => 1,
                'msg' => $file->getError(),
                'url' => '',
            ];
        }
    } else {
        $data = [
            'code' => 1,
            'msg' => '请选择要上传的文件',
            'url' => '',
        ];
    }

    return json($data);
}

여기에서는 먼저 request()->file('image') 메서드를 통해 업로드된 파일을 가져와서 파일이 존재하는지 확인한 다음 유효성 검사() 메서드를 사용하여 접미사를 붙입니다. 업로드된 파일. 사용자가 업로드한 파일 형식이 올바른지 확인하고 마지막으로 move() 메서드를 사용하여 파일을 업로드하고 업로드 성공 또는 업로드 실패 결과를 반환합니다.

3. 페이지 구현

마지막으로 페이지에 파일 업로드 기능을 구현해야 합니다. 코드는 다음과 같습니다.

<form id="upload-form" action="<?php echo url('upload'); ?>" method="post" enctype="multipart/form-data">
    <input type="file" name="image" id="image" accept="image/jpeg,image/png,image/gif">
</form>
<button id="btn-upload" type="button">上传</button>

<script>
$(function() {
    $('#btn-upload').click(function() {
        var formData = new FormData($('#upload-form')[0]);
        $.ajax({
            url: $('#upload-form').attr('action'),
            type: 'post',
            data: formData,
            contentType: false,
            processData: false,
            success: function(res) {
                if (res.code === 0) {
                    alert(res.msg);
                    $('#image').val('');
                } else {
                    alert(res.msg);
                }
            },
            error: function(xhr, status, error) {
                alert('上传错误:' + error);
            }
        });
    });
});
</script>

여기서 페이지에 양식을 추가했고, 입력 태그의 이름 값을 추가했습니다. 업로드된 파일은 '이미지'입니다. 그런 다음 jQuery의 ajax() 메서드를 사용하여 FormData 모드에서 컨트롤러에 양식 데이터를 업로드하고 업로드 성공 또는 실패 후 해당 프롬프트를 제공합니다.

4. 요약

위의 코드를 통해 ThinkPHP6에서 파일 업로드 기능을 성공적으로 구현했습니다. 동시에 우리는 보안에도 주의를 기울여야 하며, 사용자가 업로드한 파일의 형식과 크기가 올바른지 확인하고, 파일 업로드가 시스템에 해를 끼치지 않도록 하며, 사용자와 시스템의 보안을 보장해야 합니다.

위 내용은 ThinkPHP6에서 파일 업로드 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.