2017-08-19 17 views
-1

概念はまだ私にはまだ分かりません。 非常に基本的なケースでは、multerを使用してファイル(myFile.txtなど)をアップロードし、元の名前をサーバー側に保持できます。nodejs multerファイルのアップロード、ファイル名が2つの場所から同じものが発生する

const upload = multer({ dest: `${UPLOAD_PATH}/` }); // multer configuration 

今、別の人は、サーバ側で同じフォルダにMYFILE.TXT同じファイル名を持つ別のファイルをアップロードすることが起こります。それは前のものを上書きするか?

これは通常どのように管理しますか?ありがとう!

答えて

1

これは前のものを上書きしますか?

はい、これは間違いなく私のコードです。このコードでは、別の場所または同じ場所から同じファイル名を使用すると置き換えられません。これは両方のファイルdestination.Serverコードserver.js

var express=require('express'); 
var multer=require('multer'); 
var path = require('path') 
var app=express(); 
var ejs = require('ejs') 
app.set('view engine', 'ejs') 
var storage = multer.diskStorage({ 
    destination: function(req, file, callback) { 
     callback(null, './public/uploads') 
    }, 
    filename: function(req, file, callback) { 
     callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)) 
     //callback(null, file.originalname) 
    } 
}) 

app.get('/api/file',function(req,res){ 
res.render('index'); 
}); 
app.post('/api/file', function(req, res) { 
    var upload = multer({ 
     storage: storage}).single('userFile'); 
    upload(req, res, function(err) { 
     console.log("File uploaded"); 
     res.end('File is uploaded') 
    }) 
}) 

app.listen(3000,function(){ 
console.log("working on port 3000"); 
}); 

では、コードcallback(null, file.originalname)を観察した場合、この行は、先に元のファイル名を維持します、それはあなたが、これはその後、使用したくない同じname.Ifを取得するときに、ファイルを置き換えますcallback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))。このコールバックは、宛先のファイル名を変更します。

は、ビューのフォルダを作成し、 index.ejs

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
    <form id="uploadForm" enctype="multipart/form-data" method="post"> 
     <input type="file" name="userFile" /> 
     <input type="submit" value="Upload File" name="submit"> 
    </form> 
</body> 
</html> 

はノードserver.js .Openなどのブラウザを、コードを実行し、.Choose http://localhost:3000/api/fileを入力アップロードするファイルを選択することができ、そこからit.ejsコードでこのファイルを保ちますファイルをアップロードし、目的のフォルダを参照してください。これはあなたのために役立ちます。

+0

大丈夫ですので、タイムスタンプを使ってこのケースを管理してください。他の人が他の方法を持っているかどうか少し調べる。 – user3552178

+0

あなたはこれがあなたのために役立つようにupvoteを作ることができます....そして、あなたは後で他の回答に基づいて受け入れることができます –

関連する問題