Node.js サーバーから (Express を使用して) ファイルをダウンロードする際に問題があります。リクエストは適切に処理され、既存のファイルに対して response.download ファイルが呼び出されます。しかし、データがクライアントで受信されると、すべてのデータが受信されるわけではなく、そこから作成された BLOB はほぼ 2 倍のサイズに肥大化します。
既存のバックエンドの再実装である /php/mixMovie.php に投稿をルーティングするサーバー部分 (Express を使用する Node.js) は次のとおりです。
app.post( '/php/mixMovie.php', function( request, response ){
....
console.log( 'serving ' + destFile );
fs.stat( destFile, function (err, stats) {
console.log(stats.size);
});
response.download( destFile );
});
コンソール出力を与える:
serving /Users/j/[...]/WTSc5e8f500-ad76-4fe5-b368-3a0f3e848813.ogg
326049
serving /Users/j/[...]/WTSc5e8f500-ad76-4fe5-b368-3a0f3e848813.ogg
326049
...
クライアントには次の JavaScript コードがあります。
$.ajax({
type: 'POST',
url: 'http://localhost:8000/php/mixMovie.php',
data: fd,
processData: false,
contentType: false
} ).done( function( data ){
console.log( data.length );
var bb = new Blob( [ data ], { type:'movie/ogg' } );
console.log( bb.size );
} );
この驚くべき出力を与える:
XHR finished loading: ("http://localhost:8000/php/mixMovie.php"). jquery-1.8.3.js:8434
314947
600641
XHR finished loading: ("http://localhost:8000/php/mixMovie.php"). jquery-1.8.3.js:8434
315028
600737
XHR finished loading: ("http://localhost:8000/php/mixMovie.php"). jquery-1.8.3.js:8434
315020
600439
XHR finished loading: ("http://localhost:8000/php/mixMovie.php"). jquery-1.8.3.js:8434
315026
600421
ここで何が起こっているか知っている人はいますか?
ありがとう、
J