Nahid Hasan
Nahid Hasan

Reputation: 707

file not dowloading in react , node js

I want to download a file in my download folder . The file is in the uploads folder, both the folders are in same directory . The file name is BasicUserFile-id.jpg

/// 2nd attempt: This time I am trying to get the file by hardcoding the file name but it's also not working, instead a blank file is getting downloaded.

app.js

  Filedownload(e) {

    e.preventDefault();

    var id = this.props.params.id;

    console.log(id);

    $.ajax({
      type: 'GET',
      url: '/download/' + id,
      success: function (data, textStatus, request) {
        window.open('./downloads/ ', '_self');
      }

    });

  }


   <button type="button" value="Download File" onClick={this.Filedownload} 
   className="btn btn-success btn-lg">Download file</button> 

////server.js

app.get('/download/:id', function(req, res){
  var basic_id = req.params.id 
  var file = __dirname + '/uploads/BasicUserFile-'+ basic_id+ ".jpg";
  res.download(file); 
});

/// 2nd try .

 Filedownload(e) {

    e.preventDefault();

    $.ajax({
      type: 'GET',
      url: '/download/' ,
      success : function(data)

      {

        fileDownload(data, 'filename.jpg');
        console.log("file downloaded")


      }


    });

  }

///server

app.get('/download/', function(req, res){

  var file = __dirname + '/uploads/BasicUserFile-5a093a24870eb12148262248.jpg';
  res.download(file); 
});

Upvotes: 0

Views: 491

Answers (1)

Paul
Paul

Reputation: 36319

Your call on the client is for a GET but your server defines a POST. For standards compliance sake, change your server to accept a GET request like so:

app.get('/download/:id', function(req, res){
  var basic_id = req.params.id 
  var file = __dirname + '/uploads/BasicUserFile-'+ basic_id+ ".jpg";
  res.download(file); 
});

Also, it's not clear from what you've posted whether the client is constructing the right URL in any case, so make sure you double check that.

Upvotes: 1

Related Questions