在JavaScript中,获取文件的下载源路径通常涉及到文件的上传和存储。以下是一些基础概念和相关信息:
以下是一个简单的示例,展示如何使用JavaScript和Node.js处理文件上传,并生成下载链接:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Upload</title>
</head>
<body>
<input type="file" id="fileInput">
<button onclick="uploadFile()">Upload</button>
<div id="downloadLink"></div>
<script>
async function uploadFile() {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
const formData = new FormData();
formData.append('file', file);
const response = await fetch('/upload', {
method: 'POST',
body: formData
});
const data = await response.json();
document.getElementById('downloadLink').innerHTML = `<a href="${data.downloadUrl}">Download File</a>`;
}
</script>
</body>
</html>
const express = require('express');
const multer = require('multer');
const { v4: uuidv4 } = require('uuid');
const fs = require('fs');
const path = require('path');
const app = express();
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
const file = req.file;
const downloadUrl = `/download/${file.filename}`;
// Save the file with a unique name
const targetPath = path.join(__dirname, 'uploads', `${uuidv4()}${path.extname(file.originalname)}`);
fs.renameSync(file.path, targetPath);
res.json({ downloadUrl });
});
app.get('/download/:filename', (req, res) => {
const filePath = path.join(__dirname, 'uploads', req.params.filename);
res.download(filePath, (err) => {
if (err) {
res.status(404).send('File not found');
}
});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
通过以上方法和示例代码,你可以有效地处理文件上传和下载,并确保系统的安全性和可靠性。
领取专属 10元无门槛券
手把手带您无忧上云