-
Star
(106)
You must be signed in to star a gist -
Fork
(27)
You must be signed in to fork a gist
-
-
Save shiawuen/1534477 to your computer and use it in GitHub Desktop.
<!DOCTYPE HTML> | |
<html lang="en-US"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>test upload by chunk</title> | |
</head> | |
<body> | |
<input type="file" id="f" /> | |
<script src="script.js"></script> | |
</body> | |
</html> |
(function() { | |
var f = document.getElementById('f'); | |
if (f.files.length) | |
processFile(); | |
f.addEventListener('change', processFile, false); | |
function processFile(e) { | |
var file = f.files[0]; | |
var size = file.size; | |
var sliceSize = 256; | |
var start = 0; | |
setTimeout(loop, 1); | |
function loop() { | |
var end = start + sliceSize; | |
if (size - end < 0) { | |
end = size; | |
} | |
var s = slice(file, start, end); | |
send(s, start, end); | |
if (end < size) { | |
start += sliceSize; | |
setTimeout(loop, 1); | |
} | |
} | |
} | |
function send(piece, start, end) { | |
var formdata = new FormData(); | |
var xhr = new XMLHttpRequest(); | |
xhr.open('POST', '/upload', true); | |
formdata.append('start', start); | |
formdata.append('end', end); | |
formdata.append('file', piece); | |
xhr.send(formdata); | |
} | |
/** | |
* Formalize file.slice | |
*/ | |
function slice(file, start, end) { | |
var slice = file.mozSlice ? file.mozSlice : | |
file.webkitSlice ? file.webkitSlice : | |
file.slice ? file.slice : noop; | |
return slice.bind(file)(start, end); | |
} | |
function noop() { | |
} | |
})(); |
Hello Guys,
chunks are ok, but I cant re create file on backend, I'm using php and I'm trying to upload an image, any tips?Hi, I Hope to Remember your question until I have some free time to post a solution that I code my own in PHP It work with test file size untill 7 GB the Whole process (chunk and merge) are handled in PHP server side.
Hi @woodchucker Can you let me know about your solution? Now i can upload file size until 250M (5M records)
Thanks.
I open a new repo to share my solution: https://github.com/woodchucker/SplitMergePHP.git
Hello,
I have reviewed your work, thank you, but a more practical solution is needed.
index.html
js.js
upload.php
Consisting of only 3 files like,
chunk-size value can be adjusted,
Working with XMLHttpRequest,
Can you suggest a workable code that can send 7GB files without additional things such as composer?
Hi, I Hope to Remember your question until I have some free time to post a solution that I code my own in PHP It work with test file size untill 7 GB the Whole process (chunk and merge) are handled in PHP server side.