Znalazłem posty bliskie tego, czego szukam, ale nie udało mi się z powodzeniem wdrożyć tego, co chcę. Oto ogólny przepływ:Konwertuj obraz Base64 na surowy plik binarny za pomocą Node.js
- Prześlij zdjęcie z resztą dane miejsce, jako dane base64
- Strip dane prefiksu, jeśli istnieje, więc mam tylko dane obrazu base64
var base64data = venue.image.replace(/^data:image\/png;base64,|^data:image\/jpeg;base64,|^data:image\/jpg;base64,|^data:image\/bmp;base64,/, '');
- przechowywania danych Base64 w GridFS poprzez MongoDB (używam gridfstore)
- Następnie chciałbym pobrać obraz na żądanie jako nieprzetworzony plik obrazu za pośrednictwem adresu URL.
// generic images route
server.get(version+'/images/:id', function(req, res) {
gridfstore.read(req.params.id, function(error,data) {
res.writeHead(200, {
'Content-Type': 'image/jpeg',
'Content-Length': data.buffer.length
});
res.end(data.buffer);
});
});
W zasadzie, metoda ta zwraca base64 bajtów przechowywane w GridFS. Próbowałem innych metod, ale nie zwracają surowego obrazu.
chciałbym podciągnąć obraz, używając URL tak:
http://[localhost]/1/images/11dbcef0-257b-11e3-97d7-cbbea10abbcb
Oto zrzut ekranu śladu przeglądarki:
dzięki @hexacyanide, próbowałem tego, co sugerowałeś, ale wraca jako nieprawidłowy obraz. Bufor jest dokładnie przydzielony, a długość jest dokładna, ale obraz po prostu się nie wyświetla, więc zrobię trochę więcej kopania i zobaczę, czy mogę podać dodatkowe informacje. Kiedy biorę identyfikator URI danych Base64 i wyświetlam go na stronie HTML z to działa, więc przynajmniej wiem, że Base64 jest ważny. – remotevision
Więc co próbujesz zrobić? Czy próbujesz wyświetlić obraz na stronie? – hexacyanide
Próbuję po prostu zwrócić obraz, tak jak byś nazwał http: // [somehost] /someimage.jpg. Załączam zrzut ekranu, jeśli w ogóle to pomaga. Za pomocą kodu, który zasugerowałeś, przeglądarka po prostu się zegarem. Korzystam również z funkcji Restify na serwerze, ale z tego, co przeczytałem, obsługuje on Node.js ServerResponse. http://mcavage.me/node-restify/#Content-Negotiation – remotevision