必要时,React使用Superagent询问图像:
exports.getImgFromSection=function(id,request){
request
.get('/img/'+id)
.end((error, response) => {
if (!error && response) {
console.log(response.file);
}
else {
console.log('There was an error fetching server', error);
}
})
}
Node.js这样回答:
app.get("/img/:id",function(req, res){
// check if exists and then
res.sendFile(path.join(__dirname, './data/img/'+req.params['id']+'.png'));
});
但是我不知道如何在React中获得图像。
console.log(response.file)
未定义。
console.log(response.files[0])
未定义。
console.log(response.body)
为空。
console.log(response)
给了我:
如何在var中获取图像?谢谢。
解决方案:
在node.js中:
var img = fs.readFile('./data/imagesUploaded/image.png', function (err, data) {
var contentType = 'image/png';
var base64 = Buffer.from(data).toString('base64');
base64='data:image/png;base64,'+base64;
res.send(base64);
});
反应:
request
.get('/img/'+imgID)
.end((error, response) => {
if (!error && response) {
this.setState({img1:response.text})
} else {
console.log('There was an error fetching server', error);
}
})
答案 0 :(得分:0)
使用Axios包在React中获取POST请求。 https://github.com/axios/axios
https://github.com/axios/axios
您需要发送请求以获取图像或发布图像。 只是一个例子。
这是React中的一个函数。
async sendEmail(name,interest,email,phone,message){
const form = await axios.post('/api/form',{
name,
interest,
email,
phone,
message
})
}
这会将请求发送到此处的Nodejs:
app.post('/api/form',(req,res)=>{
console.log(req.body);
console.log(123);
const output = `
<p> You have a Request</p>
<h3> Contact Details </h3>
<ul>
<li> Name : ${req.body.name}</li>
<li> Interest : ${req.body.interest}</li>
<li> Email : ${req.body.email}</li>
<li> Email : ${req.body.phone}</li>
<li> Email : ${req.body.message}</li>
</ul>
`;
这也是获取请求的方式,但是获取部分将在React代码中。
无论如何,请阅读Axios文档。将会有各种各样的例子。
答案 1 :(得分:0)
我正在使用axios(但是会很相似),这就是我获取图像的方式。
const res = await axios.get(`/image/${imageId}`, {
responseType: 'arraybuffer'
});
const imgFile = new Blob([res.data]);
const imgUrl = URL.createObjectURL(imgFile);
我认为响应类型在这里很重要.....但是我有节点将其作为流发送(因为我正在从mongo中检索……)
答案 2 :(得分:0)
解决方案:
在node.js中:
var img = fs.readFile('./data/imagesUploaded/image.png', function (err, data) {
var contentType = 'image/png';
var base64 = Buffer.from(data).toString('base64');
base64='data:image/png;base64,'+base64;
res.send(base64);
});
反应:
request
.get('/img/'+imgID)
.end((error, response) => {
if (!error && response) {
this.setState({img1:response.text})
} else {
console.log('There was an error fetching server', error);
}
})