大文件分片上传服务器
来源:互联网 发布:魔兽世界数7.3数据库 编辑:程序博客网 时间:2024/05/16 12:37
原网站链接:https://note.wiz.cn/web?dc=cae0edbe-64d0-427f-b949-dafd518e6a1c&cmd=kw%2C%E5%A4%A7%E6%96%87%E4%BB%B6&kb=31386f43-b4d3-4fe5-9d04-d1bca7f839c2
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<form>
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<input type="file" name="file">
<input type="button" value="上传" >
<div></div>
</form>
<script src="js/index.js"></script>
</body>
</html>
index.js
/**
* Created by Administrator on 2017/04/09 0009.
*/
function sendForm(){
var process = document.getElementsByTagName('div')[0];
var file = formAll.children[2].files[0];
var size = file.size;
var name = file.name;
var shardSize = 2*1024*1024;
var total = Math.ceil(size/shardSize);
var successed = 0;
var un = document.getElementsByTagName('input')[0];
var pw = document.getElementsByTagName('input')[1];
for(var i=0;i<total;i++){
var start = i*shardSize;
var end = (i+1)*shardSize>size?size:(i+1)*shardSize;
var form = new FormData();
form.append('name',name);
form.append('total',total);
form.append('data',file.slice(start,end));
form.append('index',i);
form.append('un',un.value);
form.append('pw',pw.value);
var xhr = new XMLHttpRequest();
xhr.open('post','http://192.168.0.8:9999/upload');
xhr.send(form);
xhr.onload=function(){
++successed;
console.log(successed);
process.style.width = (successed/total)*100+"%";
}
}
}
var formAll = document.getElementsByTagName('form')[0];
var uploadBtn = formAll.children[3];
uploadBtn.onclick = sendForm;
httpServer.js
const express = require('express');
const xtpl = require('xtpl');
const formidable = require('formidable');
const fs = require('fs');
const mongoose = require('mongoose');
const router = new express.Router();
var schema = mongoose.Schema;
mongoose.connect('mongodb://127.0.0.1:27017/logindb');
var app = express();
var successed = 0;
var output=[];
app.use(express.static('./static'));
app.set('views','./view');
app.set('view engine','html');
app.engine('html',xtpl.renderFile);
var loginSchema = new mongoose.Schema({
username:String,
passward:String
});
var login = mongoose.model('login',loginSchema);
router.get('/index',function(req,res){
res.render('index.html',{});
});
router.post('/upload',function(req,res){
var form = new formidable.IncomingForm();
form.uploadDir = "./static/upload";
form.keepExtensions = true;
form.parse(req, function(err, fields, files) {
if(output.length==0){
output= new Array(fields.total);
}
output[fields.index]=files.data;
++successed;
if(successed == fields.total){
function read(i){
var data = fs.readFileSync(output[i].path);
fs.appendFile('./static/upload/'+fields.name,data);
fs.unlink(output[i].path);
i++;
if(i<successed){
read(i);
}else{
successed=0;
output=[];
return;
}
}
read(0);
login.create({username:fields.un+"",passward:fields.pw+""},function(err,result){
if(err){
console.log(err);
return;
}
console.log('ok');
});
}
res.end("1");
});
});
app.use(router);
app.listen(9999,'192.168.0.8');
package.json
{
"name": "mongodb",
"version": "1.0.0",
"description": "mongodb",
"main": "httpServer.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"mongoose"
],
"author": "chenyanrui",
"license": "ISC",
"dependencies": {
"express": "^4.15.2",
"formidable": "^1.1.1",
"mongoose": "^4.9.3",
"xtemplate": "^4.6.0",
"xtpl": "^3.3.0"
}
}
阅读全文
0 0
- 大文件分片上传服务器
- webuploader分片上传大文件
- webupload大文件分片上传
- webuploader 实现大文件 分片上传
- iOS大文件分片上传和断点续传
- 大文件分片断点上传显示进度条
- 大文件分片上传和断点续传
- iOS大文件分片上传和断点续传
- Python实现大文件分片上传
- 前段WebUploader;JavaEE大文件分片上传接收
- HttpUrlconnection 实现大文件分片断点上传,支持Https
- js分片上传大文件,前端代码,亲测ok
- 百度Webuploader 大文件分片上传(.net接收)
- Java实现浏览器端大文件分片上传
- webuploader大文件 分片 断点续传
- JAVA NIO SOCKET大文件上传服务器
- 上传大文件到linux服务器:HFS
- 基于NodeJs的Express及Webuploader实现大文件分片上传与合并(一)
- PHP上传图片
- c#类,封装了键盘,和鼠标模拟,和内存读取
- vue2.0数据请求之axios
- PSR-1 基本代码规范和规范提示
- table中如何隐藏td
- 大文件分片上传服务器
- Javascript中的return作用及javascript return关键字用法详解
- Eclipse 构建Maven项目详细流程(图文并茂)
- PAT (Advanced Level) Practise 1004. Counting Leaves (30)
- 用公众号编辑器排版出精彩文案,公众号编辑器案例
- 杭电acm P2024C语言的合法标识符
- Spring Cloud云服务
- 单进程单线程,完成并发服务器(基础版)
- 《摆渡人》读后感