私はポストハンドラのアップロードとマルチタの一意のIDにshortidを使用しています。Node.js multerとshortidを使用した各アップロードの一意のフォルダ
私はいくつかの入力と画像をアップロードしています。私は各アップロードが "upload/XXXXX"内に保存されるようにしたいと思います。 私はapp.post(...)上で一意のIDを生成しています。このIDをmulterに送信する方法を知りたいと思います。
グローバル変数を使用すると、同時に2つの投稿が正しく行われても問題はありますか?
var Storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, path.join(__dirname, 'uploads', XXXXX)); //Unique id for file is the same as Folder
},
filename: function (req, file, callback) {
callback(null, XXXXX); //Unique id
}
});
var upload = multer({
storage: Storage
}).single('pic');
//tell express what to do when the route is requested
app.post('/fbshare', function (req, res, next) {
let ui = shortid();
upload(req, res, function (err) {
if (err) {
return res.end("Something went wrong!");
}
return res.end("File uploaded sucessfully!.");
});
});
app.post()からStorageにパススルーする方法はありますか?または、あなたがより良い解決策を持っているなら、私はすべて耳にします。
は
最終解決
var Storage = multer.diskStorage({
destination: function (req, file, callback) {
fs.mkdir(path.join(__dirname, 'uploads', req.ui), function(){
callback(null, path.join(__dirname, 'uploads', req.ui));
});
},
filename: function (req, file, callback) {
callback(null, req.ui + file.originalname.substring(file.originalname.indexOf('.'), file.originalname.length));
}
});
var upload = multer({
storage: Storage
}).single('pic');
//tell express what to do when the route is requested
app.post('/fbshare', function (req, res, next) {
req.ui = shortid();
upload(req, res, function (err) {
if (err) {
return res.end("Something went wrong!");
}
return res.end("File uploaded sucessfully!.");
});
}ありがとう)。
と同じことが、あなただけのreqオブジェクトから値を渡すことができませんか? –
フィールドの1つを置き換えるか、req.bodyに追加するのと同じですか? –
ええ、基本的に受け入れられた答えは言った;) –