【发布时间】:2018-08-19 19:47:22
【问题描述】:
尝试在云端使用 Express/Node 进行文件上传工作,但没有成功。我能够发布请求,我的文件被上传到云端服务器,但从未得到响应,导致我的请求超时。我正在使用 [express-file-upload][1] 将数据作为比特流和 axios 发送到 cloudinary 以发布它。
我的 Express 路由器 API 代码:
const fileUpload = require("express-fileupload");
const cloudinary = require("cloudinary");
router.use(fileUpload());
cloudinary.config({
cloud_name: "xyx",
api_key: "xyxxyxxyxxyxxyx",
api_secret: "xyxxyxxyxxyxxyxxyx"
});
router.post("/upload", function(req, res, next) {
console.log(req);
var fileGettingUploaded = req.files.file.data;
cloudinary.uploader
.upload_stream({ resource_type: "raw" }, function(error, result) {
console.log(error);
console.log(result);
})
.end(fileGettingUploaded);
});
[1]: https://www.npmjs.com/package/express-fileupload
来自组件的我的 Axios 发布请求
const { fileName } = this.state;
const formData = new FormData();
formData.append("file", fileName);
const url = `/api/upload`;
axiosInstance
.post(url, formData, {
headers: {
"Content-Type": fileName.type
}
})
.then(response => {
if (response.status === 200 && response.data) {
console.log(response);
}
})
.catch(error => {
console.log(error);
});
};
这会导致请求成功将我的文件上传到 cloudinary(我可以在 cloudinary 的仪表板中看到上传的文件)但无法给我回复,理想情况下应该是上传文件的 url。谁能指导我什么我做错了吗?
【问题讨论】:
-
您是否尝试过只记录
response,即不检查200 以及是否有data? -
控制台有错误吗?
-
@Tony 是的,它没有记录任何响应。我所看到的只是请求在我指定的时间后超时,即错误:超过 120000 毫秒的超时..
标签: node.js reactjs express file-upload cloudinary