2014-07-02 16 views
13

Sto realizzando una piccola app in sails.js e ho bisogno di memorizzare le immagini nel database. Per questo, ho bisogno di convertire un'immagine in un URL di dati con codifica Base64 in modo che io possa salvarlo come una stringa nei miei modelli di vele. Tuttavia, non so come convertirlo in questo modulo. Tutte le domande più vecchie poste sulla conversione di un'immagine in URL di dati con codifica Base64, e rispondono a tale proposito dal farlo sul lato client. Tuttavia, voglio farlo sul lato server mentre otterrò l'immagine attraverso una richiesta di post. Come posso raggiungere questo obiettivo?Come si converte un'immagine in un URL di dati con codifica Base64 in sails.js o generalmente nel lato server JavaScript?

+0

Qual è la tua tecnologia lato secondario? – Nadendla

+0

Node.js, Sails.js – Darwesh

risposta

30

Come ho capito, si desidera convertire un file in una stringa codificata in base64. Che il file sia o meno un'immagine, non importa.

var fs = require('fs'); 

// function to encode file data to base64 encoded string 
function base64_encode(file) { 
    // read binary data 
    var bitmap = fs.readFileSync(file); 
    // convert binary data to base64 encoded string 
    return new Buffer(bitmap).toString('base64'); 
} 

Usage:

var base64str = base64_encode('kitten.jpg'); 

Source

+1

'fs.readFile' fornisce un buffer se non viene passata alcuna codifica, quindi non è necessario il' nuovo Buffer() '. [Documenti correlati] (https://nodejs.org/api/fs.html#fs_fs_readfile_file_options_callback). – tleb

+5

Non dimenticare di aggiungere il prefisso URI di dati: 'data: [] [; base64],' Ad esempio: 'data: image/png; base64,' nel caso di un'immagine PNG. Ulteriori informazioni: [Data URIs su MDN] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) –

+1

nuovo Buffer() è obsoleto. Puoi usare invece fs.readFileSync (file, {encoding: 'base64'}); –

0

Qui `s un altro modo semplice, usarlo quando si elencano le immagini

@{ 
    if (item.ImageData != null) 
    { 
     string imageBase64 = Convert.ToBase64String(item.ImageData); 
     string imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64); 
     <img src="@imageSrc" width="100" height="100" /> 
    } 
} 
+4

Non penso che questo sia javascript affatto –

+0

Sintassi del rasoio dopo tutto –

5

Può essere realizzato con readFileSync, passando il percorso dell'immagine come prima p arameter e un'opzione di codifica come il secondo. Come mostrato di seguito:

var fs = require('fs'); 

var imageAsBase64 = fs.readFileSync('./your-image.png', 'base64'); 

Come per la documentazione node:

fs.readFileSync (percorso [, opzioni])

versione sincrona di fs.readFile(). Restituisce il contenuto di del percorso.

Se l'opzione di codifica è specificata, questa funzione restituisce una stringa . Altrimenti restituisce un buffer.

Problemi correlati