HTML5中文件上传的代码
这篇文章给大家分享的内容是关于HTML5中文件上传的代码,有一定的参考价值,有需要的朋友可以从参考一下,希望对你有所帮助。
XHR2上传二进制文件
html代码:
<input type="file" onchange="handleUpload()">
javascript代码:
function handleUpload(){ var file = document.querySelector('input[type=file]').files[0]; if(!!file) { var reader = new FileReader(); // 读取文件二进制 reader.readAsArrayBuffer(file); reader.onload = function() { upload(this.result, file.name); } } }function upload(binary, filename){ var xhr = new XMLHttpRequest(); // 通过post发送二进制数据,文件信息拼接在url xhr.open('POST', './upload.php?filename=' + filename); xhr.overrideMimeType("application/octet-stream"); if(xhr.sendAsBinary) { xhr.sendAsBinary(binary); }else { xhr.send(binary); } xhr.onload = function() { var res = JSON.parse(xhr.response); if(res.status === 'success') { alert('上传成功'); }else { alert('上传失败'); } } }
php代码:
<?php $result = new stdClass(); $fileName = $_GET['filename']; $filePath = './document/'; function binary_to_file($fileName){ // 获取二进制数据 $content = file_get_contents('php://input'); if(empty($content)) { $content = $GLOBALS['HTTP_RAW_POST_DATA']; } $res = file_put_contents($GLOBALS['filePath'] . $fileName, $content, true); return $res; }if(binary_to_file($fileName) === FALSE) { $result->status = 'error'; }else { $result->status = 'success'; }echo json_encode($result);
2.HTML5 大文件分片上传
javascript代码:
const LENGTH = 10*1024; // 每次上传10kbvar file, chunks = [], index = 1, // 当前上传块 total; // 总块数function handleUpload() { file = document.querySelector('[type=file]').files[0]; total = Math.ceil(file.size / LENGTH); for(var i = 0; i < total; i++) { chunks[i] = file.slice(i*LENGTH, (i+1)*LENGTH); } upload(chunks, index, total, polling); }function upload(chunks, index, total, callback) { var xhr = new XMLHttpRequest(), chunk = chunks[index - 1], formData = new FormData(); // 表单对象 formData.append('file', chunk); formData.append('index', index); formData.append('total', total); formData.append('filename', file.name); xhr.open('POST', './upload.php'); xhr.send(formData); xhr.onload = function() { var res = JSON.parse(xhr.response); if(typeof callback == 'function') { callback.call(this, res, chunks, index, total); } } }function polling(res, chunks, index, total){ if(res.isFinish) { alert('上传成功') }else { console.log(res.progress); upload(chunks, index + 1, total, polling); } }
php代码:
文件上传类 FileUpload.php
<?php class FileUpload { private $index; private $total; private $filename; private $filePath = './document/'; private $file; private $tmpFile; // 临时文件 function __construct($tmpFile, $index, $total, $filename) { $this->index = $index; $this->total = $total; $this->filename = $filename; $this->tmpFile = $tmpFile; $this->move_file(); } /** * 创建文件夹 * @return bool */ public function touch_dir() { if(!file_exists($this->filePath)) { return mkdir($this->filePath); } } /** * 移动文件 */ public function move_file() { $this->touch_dir(); $this->file = $this->filePath . $this->filename . '_' . $this->index; move_uploaded_file($this->tmpFile, $this->file); } /** * 合并文件 */ public function merge_file() { if($this->index == $this->total) { $mergeFile = $this->filePath . $this->filename; for($i = 1; $i <= $this->total; $i++) { $chunk = file_get_contents($mergeFile.'_'.$i); file_put_contents($mergeFile, $chunk, FILE_APPEND); } $this->del_file(); } } /** * 删除文件 */ public function del_file() { for($i = 1; $i <= $this->total; $i++) { $delFile = $this->filePath . $this->filename. '_' . $i; @unlink($delFile); } } /** * 结果返回 * @return stdClass */ public function getReturn() { $result = new stdClass(); if($this->index == $this->total) { $result->isFinish = TRUE; $this->merge_file(); }else { $result->progess = ($this->index / $this->total); } return $result; } }
接口调用upload.php
:
<?php require './FileUpload.php'; $fileUpload = new FileUpload($_FILES['file']['tmp_name'], $_POST['index'], $_POST['total'], $_POST['filename']); $result = $fileUpload->getReturn(); echo json_encode($result);
相关文章推荐:
以上是HTML5中文件上传的代码的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。
