How to download attachment into browser node






















Much better now, great effort. If OP or anyone else has any doubts will ask here. Rajitha Gunathilake Rajitha Gunathilake 76 4 4 silver badges 9 9 bronze badges. But downloaded files are not opening. Sign up or log in Sign up using Google. Sign up using Facebook. Sign up using Email and Password. Post as a guest Name. Email Required, but never shown. The Overflow Blog. Podcast what if you could invest in your favorite developer? Who owns this outage? Building intelligent escalation chains for modern SRE.

Featured on Meta. Now live: A fully responsive profile. Reducing the weight of our footer. Linked 8. Related Hot Network Questions. VinceYuan the callback is confusing me. What would I place as the cb argument? Abdul Sounds like you are very new to node. Take a look at this tutorial: tutorialspoint. Abdul maybe it would be good if you share with the rest of the class what you have figured out? Is there a way to see the speed of the download?

Show 7 more comments. Kelvin Omereshone 2 2 silver badges 11 11 bronze badges. Abdul You specify the callback with a function only if you need to do something when the file has been successfully fetched. It would be good to check the status code before saving: response. But we don't check the result return cb err. Buzut Buzut 4, 4 4 gold badges 41 41 silver badges 50 50 bronze badges. The request module just works straight for HTTPs.

S Ventura. It's more error prone without a doubt. Anyway, in any case where using request module is an option, I'd advise it as it's way higher level and thus, easier and efficient. Alex, nope, this is an error message and there's a return. So if response.

Thank you for showing example using request module. Show 3 more comments. MikeL 5, 38 38 silver badges 41 41 bronze badges. Augusto Roman Augusto Roman 6 6 silver badges 4 4 bronze badges. What for are you storing request into a variable? You are right, there is no need to save the request, its not used anyway. That's what you mean? Yes, I think that's what polkovnikov. Per default the fs. Bjarke Pjedsted Bjarke Pjedsted 4 4 silver badges 8 8 bronze badges.

Two comments on this: 1 it should probably reject Error objects, not strings, 2 fs. This works great! No errors popped up but the. Removing the logic for the flag fixed it. Just wanted to point that out if someone had the issues with the approach.

Is there a memory leak in this answer: stackoverflow. You can add timeout like I did in http. The memory leak is only if the file take too long to be downloaded. Based on the other answers above and some subtle issues, here is my attempt. Check the file does not exist before hitting the network by using fs.

Only create the fs. This reduces the amount of fs. Even on a OK we can still possibly reject due to an EEXIST file already exists imagine another process created the file whilst we were doing network calls.

Recursively call download if you get a Moved Permanently or Found Moved Temporarily redirect following the link location provided in the header. The issue with some of the other answers recursively calling download was that they called resolve download instead of download This way the nested chain of promises resolve in the correct order.

It might seem cool to clean up the temp file asynchronously, but I chose to reject only after that completed too so I know that everything start to finish is done when this promise resolves or rejects. Josh Peak Josh Peak 4, 4 4 gold badges 33 33 silver badges 48 48 bronze badges.

You shouldn't waste resources doing the download if the destination file already exists. Do the check first if possible. Phil Really good point. I have updated the example with an earlier guard check before falling into the recursive networking calls but left the success file handling code the same.

This short circuit guard statement should save some time in this case now. Vince Yuan's code is great but it seems to be something wrong. But we don't check the result if callback callback err.

Feel Physics Feel Physics 2, 4 4 gold badges 23 23 silver badges 36 36 bronze badges. I prefer request because you can use both http and https with it. Looks like Request has been deprecated github. As far as I understand your intention, you want to basically start a download when the user clicks something, without leaving the page. Since the server is sending the file as download, all you need to do on the client is. Have you tried to set the header? I can't see it set in your code so I'd suggest that you set the content-type on your response.

Have a look here for a better understanding of response headers: Node. Edit: One more thing FYI, the error you getting is because the browser is getting some data and it doesn't know what to do with it.

You need to tell him what data is receiving in order for him to know what to do with it. That's why you need the response header, to tell the browser what data is being transmited.



0コメント

  • 1000 / 1000