Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kod imbasan PC memuat naik pelaksanaan PHP

Kod imbasan PC memuat naik pelaksanaan PHP

PHP中文网
PHP中文网asal
2023-05-05 12:47:35127semak imbas

Muat naik kod imbasan sisi PC ialah topik hangat dalam bidang pembangunan sejak beberapa tahun kebelakangan ini. Ia boleh memuat naik fail tempatan dengan mudah ke pelayan, dan menggunakan kaedah imbasan kod untuk menggantikan kaedah muat naik tradisional, yang lebih mudah dan cekap. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk melaksanakan pengimbasan dan muat naik PC.

Untuk mengimbas kod QR pada PC untuk memuat naik, kita perlu memahami beberapa konsep terlebih dahulu. Yang pertama ialah prinsip penjanaan dan pengimbasan kod QR, dan yang kedua ialah teknologi PHP untuk melaksanakan muat naik fail.

Prinsip penjanaan dan pengimbasan kod QR

Kod QR ialah kod grafik yang boleh menyimpan sejumlah besar maklumat. Ia boleh digunakan dalam pelbagai situasi, seperti pautan, teks, peta, kenalan dan banyak lagi. Terdapat banyak cara untuk menjana kod QR, yang paling biasa digunakan ialah menggunakan rangka kerja JavaScript QRCode.js. Melalui rangka kerja ini, kami boleh menjana kod QR yang sepadan daripada teks, URL dan maklumat lain.

Apabila mengimbas kod QR, kita boleh menggunakan perisian pengimbasan telefon mudah alih untuk mengimbas kod QR menggunakan kamera telefon mudah alih, dan mendapatkan maklumat yang diwakili oleh kod QR melalui pengimbasan. Untuk bahagian PC, kami juga boleh menggunakan perisian pengimbasan kod QR seperti Zbar untuk mengimbas kod QR.

PHP melaksanakan teknologi muat naik fail

PHP ialah bahasa skrip sebelah pelayan yang sangat popular dan memainkan peranan penting dalam bidang pembangunan Web. Untuk muat naik fail, PHP menyediakan kelas muat naik kelas muat naik fail yang sangat mudah.

Apabila menggunakan kelas muat naik untuk melaksanakan muat naik fail, kami hanya perlu membuat seketika kelas dan menggunakan kaedah yang sepadan untuk memuat naik fail. Antaranya, kaedah penting termasuk: muat naik(), getFileName(), getErrorMsg(), dsb.

PHP merealisasikan muat naik kod imbasan PC

Dengan pengetahuan asas di atas, kita boleh mula melaksanakan fungsi muat naik kod imbasan PC. Di sini kami akan membahagikannya kepada dua bahagian iaitu pemprosesan fail latar belakang dan penjanaan fail bahagian hadapan.

Pemprosesan fail latar belakang

1. Muat naik antara muka fail

Mula-mula kita perlu melaksanakan antara muka untuk memuat naik fail, yang digunakan untuk memproses aliran fail yang dihantar dari meja depan dan perkara yang kami perlukan untuk memuat naik maklumat Fail. Untuk jenis fail dan saiz fail yang berbeza, kami perlu melakukan pemprosesan khas, seperti mengehadkan saiz dan jenis imej yang dimuat naik, dsb.

Contoh kod:

<code class="php"><?php
header('Content-type: application/json');
$FILE_BASE = './files/';
$MAX_SIZE = 10 * 1024 * 1024;//10M
$ALLOW_FILE_SUFFIX = ['png', 'jpg', 'jpeg', 'bmp', 'gif'];//允许上传的文件类型
$max_size_POST = ini_get('post_max_size');
$max_size_UPLOAD = ini_get('upload_max_filesize');
$max_size = min($MAX_SIZE, getBytes($max_size_POST), getBytes($max_size_UPLOAD));

$filename = $_POST['filename'];

if (empty($filename)) {
    echo json_encode(['status' => 'error', 'msg' => 'filename is empty']);
    return;
}

if(empty($_FILES) || empty($_FILES['file'])){
    echo json_encode(['status' => 'error', 'msg' => 'file is empty']);
    return;
}

$file_size = $_FILES['file']['size'];

if($file_size > $max_size){
    echo json_encode(['status' => 'error', 'msg' => 'file size is too big']);
    return;
}

$file_type = strtolower(pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION));

if(!in_array($file_type, $ALLOW_FILE_SUFFIX)){
    echo json_encode(['status' => 'error', 'msg' => 'file type is not allowed']);
    return;
}

if(!is_dir($FILE_BASE)){
    mkdir($FILE_BASE, 0777, true);
}
$file_path = $FILE_BASE.$filename;
if(move_uploaded_file($_FILES["file"]["tmp_name"], $file_path)){
    echo json_encode(['status' => 'success', 'msg' => 'upload success']);
}else{
    echo json_encode(['status' => 'error', 'msg' => 'upload fail']);
}
function getBytes($val)
{
    $val = trim($val);
    $last = strtolower($val[strlen($val) - 1]);
    $val = preg_replace('/[^0-9]/', '', $val);
    switch ($last) {
        case 'g':
            $val *= 1024 * 1024 * 1024;
            break;
        case 'm':
            $val *= 1024 * 1024;
            break;
        case 'k':
            $val *= 1024;
            break;
    }
    return $val;
}
?></code>

2. Jana kod QR

Menjana kod QR boleh dicapai menggunakan rangka kerja QRCode.js. Kami perlu menukar nama fail dan maklumat berkaitan untuk dimuat naik ke dalam maklumat kod QR dan kemudian menjana kod QR yang sepadan.

Contoh kod:

<code class="php"><?php
$filename = $_POST['filename'];
$path = 'http://localhost/'; //服务器地址
$text = urlencode(json_encode(['filename' => $filename, 'path' => $path]));
$url = "http://qr.liantu.com/api.php?text=" . $text;
echo $url; //返回二维码地址
?></code>

Penjanaan fail hadapan

Di bahagian hadapan, kita perlu menjana kod QR dan memaparkannya dalam kotak pratonton di sebelah kanan . Di samping itu, kami juga perlu menambah butang operasi dan maklumat segera yang sepadan untuk memuat naik fail.

Contoh kod:

<code class="html"><!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>PC扫码上传</title>
    <style type="text/css">
        .upload {
            display: inline-block;
            background: #1B96F3;
            color: #fff;
            padding: 8px 12px;
            border-radius: 4px;
            cursor: pointer;
            outline: none;
        }

        .upload:hover {
            background-color: #2A87CB;
        }

        .img-preview {
            width: 200px;
            height: 200px;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .img-preview img {
            max-width: 100%;
            max-height: 100%;
            object-fit: contain;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="qrcode-container">
            <div class="qrcode"></div>
        </div>
        <div class="upload-container">
            <input type="file" id="file" style="display:none" onchange="uploadFile(this)"/>
            <button class="upload" onclick="document.getElementById('file').click()">上传文件</button>
            <div class="alert"></div>
        </div>
        <div class="img-preview-container">
            <h4>预览</h4>
            <div class="img-preview"></div>
        </div>
    </div>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
    <script type="text/javascript">
        function createQrcode(url) {
            var qrcode = new QRCode(document.querySelector('.qrcode'), {
                text: url,
                width: 200,
                height: 200,
                colorDark: "#000000",
                colorLight: "#ffffff",
                correctLevel: QRCode.CorrectLevel.H
            });
        }

        function showPreview(file) {
            var fr = new FileReader();
            fr.onload = function () {
                $('<img>').attr('src', fr.result).appendTo('.img-preview');
            }
            fr.readAsDataURL(file);
        }

        function uploadFile(obj) {
            var file = obj.files[0];
            var fd = new FormData();
            fd.append('file', file);
            fd.append('filename', file.name);
            $.ajax({
                url: '/upload.php',
                type: 'POST',
                data: fd,
                processData: false,
                contentType: false,
                success: function (data) {
                    if (data.status == 'success') {
                        createQrcode(data.msg);
                        showPreview(file);
                        $('.alert').text('上传成功');
                    } else {
                        $('.alert').text('上传失败');
                    }
                },
                error: function () {
                    $('.alert').text('上传失败');
                }
            });
        }
    </script>
</body>
</html></code>

Ringkasnya, kami telah berjaya menyelesaikan pembangunan muat naik kod imbasan PC. Dalam proses ini, kami mempelajari prinsip penjanaan dan pengimbasan kod QR, serta teknologi muat naik fail menggunakan PHP, dan menggabungkan kedua-duanya untuk melengkapkan pelaksanaan fungsi pengimbasan dan muat naik kod PC. Bagi pembangun, kaedah muat naik yang lebih mudah dan cekap ini akan menjadi topik hangat dan permintaan dalam pembangunan.

Atas ialah kandungan terperinci Kod imbasan PC memuat naik pelaksanaan PHP. 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
Artikel sebelumnya:Tukar php ke jsonArtikel seterusnya:Tukar php ke json