Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 在reactjs中检索图像文件_Api_Reactjs_Express_Multer - Fatal编程技术网

Api 在reactjs中检索图像文件

Api 在reactjs中检索图像文件,api,reactjs,express,multer,Api,Reactjs,Express,Multer,我正在通过react前端从api检索图像文件。当我的组件收到带有blob承诺的响应时,我不确定如何显示返回的图像,该承诺在组件装载时尚未解决 下面是我使用express.js的后端api,特别是使用先前使用multer保存的文件进行响应的部分 Pet.findOne({_id : req.params.petId}, function(err, pet) { if(err)return next(err); if(!pet){ re

我正在通过react前端从api检索图像文件。当我的组件收到带有blob承诺的响应时,我不确定如何显示返回的图像,该承诺在组件装载时尚未解决

下面是我使用express.js的后端api,特别是使用先前使用multer保存的文件进行响应的部分

Pet.findOne({_id : req.params.petId}, function(err, pet) {
          if(err)return next(err);
          if(!pet){
            return res.status(400).json({message:"Pet not found", success: false});
          }
          res.sendFile(pet.profilePicturePath, {root : './'});
        });
这将从mongodb中查找pets图像,然后使用express的sendFile方法在此处响应我的前端请求:

fetch('/api'+nextState.location.pathname,{
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      method: 'POST',
      body: JSON.stringify({
        token: tokenFound
      })
    })
    .then((res)=>{
      if(res.error){
        browserHistory.push('/login')
      }
      return res;
    }).then((json) =>{
      if(json.success === false){
        browserHistory.push('/login');
      }else{
        localStorage.setItem('token', tokenFound);
        nextState.routes.json = json;
      }
    }).then((blob) => {
      nextState.routes.blob = blob;
      cb();
    })
    .catch(err => console.log('Error token: ' + err));
  }else{
    browserHistory.push('/login');
    cb();
  }

当我转到调用上述函数onEnter“”的组件PetPage时,我不确定如何显示收到的图像文件。

使用这一行:您能提供更多关于“cb();”的更新吗您是否正在使用任何库(如
redux
)来管理异步数据api?@SourLeangChhean using将不起作用,因为我需要进行api调用来检索图像文件,并在执行此操作时提供jwt来检查用户是否被授权。@nagarajtanri yes,cb()是回调函数,它允许我在react routes.js文件中运行此获取方法,然后呈现组件。我使用它来检查用户是否已登录,然后如果api确认,则适当地指导他们。我没有使用redux来异步加载,我不知道redux是如何工作的,但我从后端收到了一个最终解决的承诺。@Athoma1那么,您可以通过您的reactJs组件向我们展示此api的调用吗?使用这行代码:您能提供更多关于“cb();”的更新吗您是否正在使用任何库(如
redux
)来管理异步数据api?@SourLeangChhean using将不起作用,因为我需要进行api调用来检索图像文件,并在执行此操作时提供jwt来检查用户是否被授权。@nagarajtanri yes,cb()是回调函数,它允许我在react routes.js文件中运行此获取方法,然后呈现组件。我使用它来检查用户是否已登录,然后如果api确认,则适当地指导他们。我没有使用redux进行异步加载,我不确定redux是如何工作的,但我从后端收到了一个最终解决的承诺。@Athoma1那么,您能否通过reactJs组件向我们展示此api的调用?