Nodejs upload image
Nodejs upload image
node新手
最近在学node,做了一个上传图片的方法。
我在网络上查到的上传图片的方法多为
但是我的要求是从手机客户端获取图片并保存到制定的目录下,所以东拼西凑的完成如下代码
主要是获取到了图片的base64的字符串,然后保存到制定目录,虽然挺简单,但是自己也走了不少弯路,这样或那样的问题很多。现拿出来供大家打击! 高手莫笑!
4 回复
为什么图片无法显示 悲催 敲代码吧
request.addListener('data',function(postDataChunk){
postData += postDataChunk;
var base64 = JSON.parse(postData).imageBase64
var base64Data = base64.replace(/^data:image\/png;base64,/,"");
fs.writeFile("./tmp/out.png", base64Data, 'base64', function(err) {
console.log(err);
});
不太懂需求
关于从手机客户端获取图片并将其保存到指定目录下的需求,我们可以使用Node.js来实现。这里提供一个简单的示例,使用Express框架来处理文件上传,并使用multer
库来处理文件(包括Base64编码的图片)上传。
首先,确保你的项目中安装了必要的依赖包:
npm install express multer
接下来,创建一个基本的服务器设置,并处理文件上传:
示例代码
- 服务器端代码
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // 设置文件保存路径
},
filename: function (req, file, cb) {
cb(null, Date.now() + path.extname(file.originalname)); // 使用时间戳作为文件名,保持唯一性
}
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('image'), (req, res) => {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
res.send('File uploaded successfully!');
});
app.listen(3000, () => {
console.log('Server started on http://localhost:3000');
});
- 客户端代码
对于从手机客户端发送Base64编码的图片,你可以通过POST请求将Base64字符串发送到服务器:
fetch('http://localhost:3000/upload', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
base64String: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...'
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
注意:上述示例中的Base64编码部分需要在实际应用中替换为真实的Base64编码字符串。同时,服务器端需要额外处理解析Base64字符串并将其写入文件的操作。
解释
- 我们使用了
multer
中间件来处理文件上传。 - 文件会被存储在
uploads/
目录下,使用时间戳作为文件名。 - 客户端需要将Base64编码的图片发送到服务器,并在服务器端进行相应的解码和保存操作。
希望这可以帮助你解决图片上传的问题。