I'd just like to point out the existence of the Content-Range 
header<http://tools.ietf.org/html/rfc2616#section-14.16>. 
It's not thoroughly described for use in making uploads, but since it's an 
entity-header, you can use it in requests/uploads as well as responses, and 
there's several examples of it being used for making partial uploads.

Austin Wright.

On Saturday, June 22, 2013 6:35:17 AM UTC-7, yu sun wrote:
>
> I'm working on file uploading and want to chunk upload files to the 
> server, but when i combined the chunked files, the file hash changed(diff 
> from the orignal hash). There might be some mistakes. Please help. thx thx.
>
> There is a strange thing that if I upload the chunk file with chunk size 
> larger than 11.4% of the file size, will got the hash correctly. Im on 
> nodejs 0.10.6 now.
>
> *My client side code:*
> function putFile(fileStat){
>     putChunks(fileStat.totalChunkNumber);
>     function putChunks(totalChunkNumber){
>         for(var i = 1; i <= totalChunkNumber; i++){
>             putChunkFile(fileStat, i)
>         }
>     }
> }
>
> function putChunkFile(fileStat, chunkNumber){
>
>     var filePath = fileStat.filePath;
>     var _start = (chunkNumber - 1) * CHUNK_SIZE;
>     var _end = _start + CHUNK_SIZE -1;
>
>     if (_end >= fileStat.fileSize){
>         _end = fileStat.fileSize;
>     }
>
>     var req = createRequest("/testfiles", "PUT",
>         {
>             'X-Chunk-Number': chunkNumber,
>             'X-Chunk-Size': _end - _start + 1
>         });
>
>     var sourceStream = fs.createReadStream(filePath, {start: _start, end: 
> _end});
>
>     sourceStream.on("open", function(){
>         sourceStream.pipe(req);
>     });
>
>     sourceStream.on("end", function(){
>         req.end();
>     });
> }
>
> *Server side code:*
> exports.put = function(req, res){
>     var list = []
>     var length = 0;
>     req.on("data", function(data){
>         list.push(data);
>         length += data.length;
>     }).on("end",function(){
>             var buffer = Buffer.concat(list, length);
>             fs.writeFile(path.join(getFilePath(), 'part' + 
> req.headers['x-chunk-number']), buffer, function(){
>                 res.status(200);
>                 res.write('uploaded ' + req.headers['x-chunk-number']);
>                 res.end();
>             });
>         });
> }
>
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to