Maison > Article > développement back-end > Implémentation PHP de téléchargement de code de scan PC
Le téléchargement de code d'analyse côté PC est un sujet brûlant dans le domaine du développement ces dernières années. Il peut facilement télécharger des fichiers locaux sur le serveur et utilise la méthode d'analyse de code pour remplacer la méthode de téléchargement traditionnelle, qui est plus pratique et efficace. . Dans cet article, nous présenterons comment utiliser PHP pour implémenter l'analyse et le téléchargement sur PC.
Pour la numérisation et le téléchargement côté PC, nous devons d'abord comprendre quelques concepts. Le premier est le principe de génération et de numérisation de codes QR, et le second est la technologie PHP permettant de mettre en œuvre le téléchargement de fichiers.
Principe de génération et de numérisation de code QR
Le code QR est un code graphique qui permet de stocker une grande quantité d'informations. Il peut être utilisé dans diverses situations, telles que des liens, du texte, des cartes, des contacts, etc. Il existe de nombreuses façons de générer des codes QR, la plus couramment utilisée étant d'utiliser le framework JavaScript QRCode.js. Grâce à ce cadre, nous pouvons générer des codes QR correspondants à partir de texte, d'URL et d'autres informations.
Lors de la numérisation du code QR, nous pouvons utiliser le logiciel de numérisation du téléphone mobile pour scanner le code QR à l'aide de l'appareil photo du téléphone portable et obtenir les informations représentées par le code QR grâce à la numérisation. Côté PC, on peut également utiliser un logiciel de scan de code QR tel que Zbar pour scanner le code QR.
PHP implémente la technologie de téléchargement de fichiers
PHP est un langage de script côté serveur très populaire et joue un rôle important dans le domaine du développement Web. Pour le téléchargement de fichiers, PHP fournit une classe de téléchargement de fichiers très pratique.
Lorsque nous utilisons la classe upload pour implémenter le téléchargement de fichiers, il nous suffit d'instancier simplement la classe et d'utiliser la méthode correspondante pour télécharger le fichier. Parmi elles, les méthodes importantes incluent : upload(), getFileName(), getErrorMsg(), etc.
PHP implémente le téléchargement de code de numérisation PC
Avec les connaissances de base ci-dessus, nous pouvons commencer à implémenter la fonction de téléchargement de code de numérisation PC. Ici, nous le diviserons en deux parties, à savoir le traitement des fichiers en arrière-plan et la génération de fichiers front-end.
Traitement des fichiers en arrière-plan
1. Interface de téléchargement de fichiers
Nous devons d'abord implémenter une interface de téléchargement de fichiers pour traiter les fichiers transférés depuis la réception Informations sur les flux et les fichiers que nous devons télécharger. Pour différents types et tailles de fichiers, nous devons effectuer un traitement spécial, tel que limiter la taille et le type des images téléchargées, etc.
Exemple de code :
<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. Générer un code QR
La génération de code QR peut être réalisée à l'aide du framework QRCode.js. Nous devons convertir le nom du fichier et les informations associées à télécharger en informations de code QR, puis générer le code QR correspondant.
Exemple de code :
<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>
Génération de fichiers front-end
Dans le front-end, nous devons générer un code QR et l'afficher dans la zone d'aperçu à droite. De plus, nous devons également ajouter des boutons de commande et des invites correspondantes pour télécharger des fichiers.
Exemple de code :
<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>
En résumé, nous avons terminé avec succès le développement du téléchargement de code scan PC. Au cours de ce processus, nous avons appris les principes de génération et d'analyse de codes QR, ainsi que la technologie de téléchargement de fichiers à l'aide de PHP, et avons combiné les deux pour achever la mise en œuvre de la fonction d'analyse et de téléchargement de codes PC. Pour les développeurs, cette méthode de téléchargement plus pratique et plus efficace deviendra un sujet brûlant et une demande en matière de développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!