我在我的Node.js-express应用程序中使用Resumable.js。我可以到达我知道文件传输成功的地步,因为我可以使用console.log(req.body)并在下面看到...
{ resumableChunkNumber: '77',
resumableChunkSize: '1048576',
resumableCurrentChunkSize: '1064195',
resumableTotalSize: '80755971',
resumableType: '',
resumableIdentifier: '80755971-humanfastq',
resumableFilename: 'human.fastq',
resumableRelativePath: 'human.fastq',
resumableTotalChunks: '77' }
关于在此之后要做什么,文档相当模糊。我需要将此文件保存到我服务器上的目录中。任何有关如何实现这一目标的帮助将不胜感激。谢谢!
答案 0 :(得分:4)
不是专家,但是我确实尝试过,并为您找到了一个实例。你没有在你的问题中提供足够的信息,所以我将从头开始。
我关注了官方github回购和提供的示例,我不得不进行一些调整,以便将文件块保存在特定目录中,然后进行更多调整以将这些块重新组合在一起并进行更多调整之后删除不必要的块。显然所有这些调整都是代码中提供的提示,以及我浏览过的其他地方。显然flow.js也在使用类似的机制(并不完全确定)。
我基本上需要更改其中一个示例中的app.js
,以便能够从浏览器上传文件,然后在本地保存它们。
使用gist使快递应用程序正常工作的说明(您可以查看官方github示例并进行更改,或者您可以按照以下说明操作):
package.json
并执行npm安装以获取模块(或手动npm install
这些express
,path
,fs
,{{ 1}})connect-multiparty
目录并确保它是可写的uploads
public
的{{1}}目录,并icons
和style.css
进行上传index.html
中的服务器地址的公共目录中index.html的行target
或49
中的50
值下面的控制台日志(注意结束 - 移除了块。)
最后我在uploads目录中有http://localhost:3000/upload
。
<强> TL; DR 强>
您需要对app.js和index.html文件进行以下调整才能通过Resumable.js上传和保存上传的文件。
已调整index.html 以更改目标值,以便在我的情况下将其指向服务器网址
image2.jpg
已调整 app.js 以向var r = new Resumable({
target:'http://localhost:3000/upload',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1
});
发送保存文件的目录(最顶层)。
resumable
我还调整了 app.js 来更改var resumable = require('./resumable-node.js')(__dirname + "/uploads");
的内容,请参阅http://localhost:3000/upload。
app.post('/uploads',...)
最后对 app.js 的最后调整是在最后一个路由处理程序,以下文件
// Handle uploads through Resumable.js
app.post('/upload', function(req, res){
resumable.post(req, function(status, filename, original_filename, identifier){
if (status === 'done') {
var stream = fs.createWriteStream('./uploads/' + filename);
//stich the chunks
resumable.write(identifier, stream);
stream.on('data', function(data){});
stream.on('end', function(){});
//delete chunks
resumable.clean(identifier);
}
res.send(status, {
// NOTE: Uncomment this funciton to enable cross-domain request.
//'Access-Control-Allow-Origin': '*'
});
});
});
我将文件resumable.js移动到与其他人相同的目录,因此我需要调整更改它的位置,以便createReadStream找到它。
答案 1 :(得分:1)
我没有使用Resumable.js但类似的东西,这就是我在Nodejs / express服务器中的做法。您还可以在此处查看更多服务器代码:https://github.com/MichaelLeeHobbs/roboMiner/tree/master/server/api/world但是请记住它不完整且具有实验性。以下代码只是一个简单的例子。
include("class.library.php");
$data = new db_connect;
$data->settings();
echo $name; // I tried this but didn't work, I put this just to make things more clearly.