如何从React.js中的Server下载文件

时间:2016-03-22 05:14:54

标签: node.js express reactjs

我已经实现了一个从服务器上下载.doc文件的代码,作为一个服务器,我使用的是带有express的服务器端代码的node.js

function downloadresume(req, res, next)
{
  var data=req.body.data;
  console.log(data);
  try {
    var JsonData=JSON.parse(JSON.stringify(data));
    console.log(JsonData);
    var filename=JsonData.Id+".docx";
    var file=__dirname+"/Resumes/"+filename;
    fs.exists(file, function(exists) {
      if (exists) {
        var stats = fs.statSync(file);
        var mimetype = mime.lookup(__dirname+"/Resumes/"+filename);
        res.setHeader('Content-disposition', 'attachment; filename='+filename);
        res.setHeader('Content-type', mimetype);
        return res.download(file);
      } else {
       res.send([{error:'File not exists'}]);
      }
    });

  } catch (e) {
    console.log(e);
    res.send(e);
  }
}

和React Side代码看起来像

  DownloadResume:function(id)
 {
   var postdata={
      data:{Id:id}
   };
   try {
     $.ajax({
       url:config.APIURL+"downloadresume",
       type: "POST",
       data:JSON.parse(JSON.stringify(postdata)),
        success: function (data, textStatus, jqXHR) {
           if(data !==null && typeof data[0] !== 'undefined')
           {
             swal("error",data[0].error,"error");
           }
        },
        error: function(xhr){
         swal("error",'Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText,"error");
     }
     });
   } catch (e) {
     swal("Eroor",e, "error");
   }
 },

如果我直接从浏览器调用downloadresume然后文件下载成功,它就无法正常工作但是当我从React尝试它时它没有用,任何人都可以指导我上面提到的代码出了什么问题。

当我打电话给我时,我得到了下面提到的回复

Response Header

Response

0 个答案:

没有答案