gpt4 book ai didi

javascript - 使用 nodejs 上传 blob

转载 作者:行者123 更新时间:2023-12-04 03:35:41 25 4
gpt4 key购买 nike

我在 nodejs 的帮助下努力将我的 pdf 文件上传到我的服务器。

我的代码:

app.post("/sendFile", function(req, res) {
var stream = fs.createWriteStream(path.join(__dirname, 'public', req.body.name + ".pdf"));
stream.once('open', function () {
stream.write(req.body.file);
stream.end();
});
});

但是,正在上传的文件是 Blob . Nodejs 文档说 .write函数接受 <string> | <Buffer> | <Uint8Array>作为第一个论点。它是否也接受 Blob ?如果没有,我应该使用哪个其他函数来正确上传 Blob进入我的服务器?

谢谢你。

编辑:或者我应该更改 Blob变成别的东西?

最佳答案

使用 Express 的 multer 模块很容易做到这一点。
我们还将向目录中添加一个测试 .html 文件(客户端 JavaScript)。

要对此进行测试,请运行 node server.js,然后导航到 http://localhost:8081在您的浏览器中。

server.js

const express = require('express');
const multer = require('multer');
const upload = multer();
const fs = require('fs');

var app = express();
app.use(express.static(__dirname));

app.post('/post_pdf/', upload.any(), (req, res) => {
console.log('POST /post_pdf/');
console.log('Files: ', req.files);
fs.writeFile(req.files[0].originalname, req.files[0].buffer, (err) => {
if (err) {
console.log('Error: ', err);
res.status(500).send('An error occurred: ' + err.message);
} else {
res.status(200).send('ok');
}
});
});

app.listen(process.env.PORT || 8081);

index.html
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script>

var fileData = null;

function loadFile() {
var preview = document.querySelector('file');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();

reader.onloadend = function () {
fileData = file;
}
if (file) {
reader.readAsDataURL(file);
}
}

function uploadFile() {
data = new FormData();
data.append('file', fileData);

$.ajax({
url: "/post_pdf/",
type: "POST",
data: data,
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success: function(data) {
document.getElementById("result").innerHTML = 'Result: Upload successful';
},
error: function(e) {
document.getElementById("result").innerHTML = 'Result: Error occurred: ' + e.message;
}
});
}

</script>
</head>
<body>
<input type="file" onchange="loadFile()"><br>
<button onclick="uploadFile()">Upload..</button>
<div id='result'></div>
</body>
</html>

关于javascript - 使用 nodejs 上传 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51825088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com