简体   繁体   中英

How to proxy an image in node express?

I have this image from Filepicker.io: https://www.filepicker.io/api/file/9H-1AxgZTwqct8tjkmkZ

But when I open it in the browser, it will download the file directly, I thought that's because the response header or something, so I'm wondering how to proxy it so that I can view it in browser like other images, like this one : https://distilleryimage1.s3.amazonaws.com/84d490a4071811e285a622000a1d039f_5.jpg

curl -si https://www.filepicker.io/api/file/9H-1AxgZTwqct8tjkmkZ | head
HTTP/1.1 200 OK
Access-Control-Allow-Headers: CONTENT-TYPE, X-NO-STREAM
Access-Control-Allow-Methods: DELETE, GET, HEAD, POST, PUT
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 21600
Cache-Control: public, max-age=315360000, no-transform
Content-Disposition: attachment; filename="中秋福利.jpg"
Content-Type: image/jpeg
Date: Fri, 28 Sep 2012 08:21:45 GMT
Server: gunicorn/0.14.6

Content-Disposition is set to attachment . If you proxy it then remove that header altogether or set it to inline .

While vinayr's answer is correct, you can avoid using a proxy altogether by appending ?dl=false to the end of your FilePicker URI.

For example: https://www.filepicker.io/api/file/9H-1AxgZTwqct8tjkmkZ?dl=false

There are also a number of other in the FilePicker Documentation , particularly the "Working with FPUrls" section and the "Retrieving the file" and "Image Conversion" subsections.

Github uses https://github.com/atmos/camo to proxy images for SSL. You can try using it. You can mount it on your express app:

var camo = require('./node_modules/server.js') // you have to strip the server.listen(port) part
app.use('/proxy', camo)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM