从AngularJS通过Node.js Express上传文件到S3的步骤如下:
<form ng-submit="uploadFile()">
<input type="file" ng-model="file" />
<button type="submit">上传文件</button>
</form>
uploadFile()
。在该函数中,使用FormData
对象将文件数据包装起来,并通过$http
服务发送POST请求到Node.js服务器。例如:$scope.uploadFile = function() {
var formData = new FormData();
formData.append('file', $scope.file);
$http.post('/upload', formData, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
}).then(function(response) {
// 文件上传成功的处理逻辑
}, function(error) {
// 文件上传失败的处理逻辑
});
};
multer
中间件来处理文件上传,并使用aws-sdk
库来连接和上传文件到S3。例如:const express = require('express');
const multer = require('multer');
const AWS = require('aws-sdk');
const router = express.Router();
const upload = multer({ dest: 'uploads/' });
// 配置AWS SDK
AWS.config.update({
accessKeyId: 'YOUR_ACCESS_KEY_ID',
secretAccessKey: 'YOUR_SECRET_ACCESS_KEY'
});
// 创建S3实例
const s3 = new AWS.S3();
// 处理文件上传请求
router.post('/upload', upload.single('file'), (req, res) => {
const file = req.file;
// 设置S3上传参数
const params = {
Bucket: 'YOUR_S3_BUCKET_NAME',
Key: file.originalname,
Body: file.buffer
};
// 上传文件到S3
s3.upload(params, (err, data) => {
if (err) {
// 文件上传失败的处理逻辑
res.status(500).json({ error: err.message });
} else {
// 文件上传成功的处理逻辑
res.json({ url: data.Location });
}
});
});
module.exports = router;
请注意,上述代码中的YOUR_ACCESS_KEY_ID
、YOUR_SECRET_ACCESS_KEY
和YOUR_S3_BUCKET_NAME
需要替换为你自己的AWS访问凭证和S3存储桶名称。
const express = require('express');
const fileUploadRouter = require('./routes/fileUpload');
const app = express();
app.use('/api', fileUploadRouter);
app.listen(3000, () => {
console.log('服务器已启动,监听端口3000');
});
这是一个基本的从AngularJS通过Node.js Express上传文件到S3的流程。你可以根据实际需求进行调整和扩展。
领取专属 10元无门槛券
手把手带您无忧上云