| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- requirePHPLib('form');
- ?>
- <?php echoUOJPageHeader('数据中心') ?>
- <div class="row shadow my-4">
- <div class="col-12 p-4">
- <h3>数据中心</h3>
- </div>
- <div class="col-6 p-4">
- <input type="file" id="fileinput">
- </div>
- <div class="col-6 text-right p-4">
- <span id="errormsg" class="text-danger"></span>
- <button type="button" onclick="upload()" class="btn btn-primary">上传</button>
- </div>
- </div>
- <script>
- let file = null, starttime = null, uploaded = 0, lasttime = null;
- document.getElementById('fileinput').onchange = (e) => file = e.target.files[0];
- function prettysize(i)
- {
- return i;
- }
- function update_progress(curr, tot) {
- let errmsg = document.getElementById('errormsg');
- errmsg.innerHTML = '进度:' + prettysize(curr) + ' / ' + prettysize(tot);
- }
- async function upload() {
- let errmsg = document.getElementById('errormsg');
- if (!file) {
- errmsg.innerHTML = '未选择文件';
- return;
- }
- const HOST = 'https://103.205.253.104:56170';
- const SYN = HOST + '/syn',
- UPLOAD = HOST + '/upload',
- FIN = HOST + '/fin';
- var blksize = 1048576 * 4;
- var syndata = new FormData();
- syndata.append('size', file.size);
- fetch(SYN, { method: 'POST', body: syndata }).then((res) => {
- res.json().then(async (data) => {
- if (data.status != 'ok') {
- errmsg.innerHTML = '失败:' + data.msg;
- return null;
- }
- var ssid = data['ssid'];
- for (var i = 0; i < file.size; i += blksize) {
- var data = new FormData();
- data.append('chunk', file.slice(i, Math.min(file.size, i + blksize)));
- data.append('ssid', ssid);
- await fetch(UPLOAD, { method: 'POST', body: data });
- update_progress(i, file.size);
- }
- var findata = new FormData();
- findata.append('ssid', ssid);
- await fetch(FIN, { method: 'POST', body: findata });
- errmsg.textContent = '完成';
- })});
- }
- </script>
- <?php echoUOJPageFooter() ?>
|