これは前のものを上書きしますか?
はい、これは間違いなく私のコードです。このコードでは、別の場所または同じ場所から同じファイル名を使用すると置き換えられません。これは両方のファイル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コードでこのファイルを保ちますファイルをアップロードし、目的のフォルダを参照してください。これはあなたのために役立ちます。
大丈夫ですので、タイムスタンプを使ってこのケースを管理してください。他の人が他の方法を持っているかどうか少し調べる。 – user3552178
あなたはこれがあなたのために役立つようにupvoteを作ることができます....そして、あなたは後で他の回答に基づいて受け入れることができます –