In realtà in uno dei miei progetti ho bisogno di leggere le immagini dal server remoto e archiviarle nel database locale come binario da utilizzare in un'applicazione successiva. quindi c'è un modo semplice per farlo? è l'unica cosa in cui mi sono bloccato ed è importante completare l'applicazione. per favore aiuto !! Grazie in anticipo.è possibile leggere l'immagine dal server remoto usando in modalità binaria usando javascript o phonegap?
risposta
È piuttosto semplice nell'ambiente HTML5/ES5 (praticamente tutto tranne Internet Explorer 9-);
Per prima cosa è necessario scaricare il contenuto binario dell'immagine in un arraybuffer, quindi convertirlo in base64 datauri, che in realtà è una stringa. Questo può essere memorizzato nei browser localStorage, indexedDb o webSQL, o anche in un cookie (non troppo efficiente); In seguito è sufficiente impostare questo datauri come immagine src da visualizzare.
<script>
function showImage(imgAddress) {
var img = document.createElement("img");
document.body.appendChild(img);
getImageAsBase64(imgAddress, function (base64data) { img.src = base64data; });
};
function getImageAsBase64(imgAddress, onready) {
//get from online or from whatever string store
var req = new XMLHttpRequest();
req.open("GET", imgAddress, true);
req.responseType = 'arraybuffer'; //this won't work with sync requests in FF
req.onload = function() { onready(arrayBufferToDataUri(req.response)); };
req.send(null);
};
function arrayBufferToDataUri(arrayBuffer) {
var base64 = '',
encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/',
bytes = new Uint8Array(arrayBuffer), byteLength = bytes.byteLength,
byteRemainder = byteLength % 3, mainLength = byteLength - byteRemainder,
a, b, c, d, chunk;
for (var i = 0; i < mainLength; i = i + 3) {
chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
a = (chunk & 16515072) >> 18; b = (chunk & 258048) >> 12;
c = (chunk & 4032) >> 6; d = chunk & 63;
base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];
}
if (byteRemainder == 1) {
chunk = bytes[mainLength];
a = (chunk & 252) >> 2;
b = (chunk & 3) << 4;
base64 += encodings[a] + encodings[b] + '==';
} else if (byteRemainder == 2) {
chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];
a = (chunk & 16128) >> 8;
b = (chunk & 1008) >> 4;
c = (chunk & 15) << 2;
base64 += encodings[a] + encodings[b] + encodings[c] + '=';
}
return "data:image/jpeg;base64," + base64;
}
</script>
ho preso in prestito la routine di conversione Base64 da questo antico messaggio: http://jsperf.com/encoding-xhr-image-data/5
È stato d'aiuto? Segna come risposta o fornisci maggiori informazioni. –
Grazie per il suggerimento. Il tuo codice funziona perfettamente. L'ho avvolto in un modulo per l'utilizzo in iMacros per Firefox [https://github.com/nisaacson/download-file-base64](https://github.com/nisaacson/download-file-base64) – Noah
- 1. Leggere un file lato server usando JavaScript
- 2. Leggere un file dal server con ssh usando python
- 3. voglio caricare una foto sul server usando phonegap in android
- 4. Immagine binaria caricata dal server all'immagine con javascript
- 5. Come leggere dal socket usando datainputstream
- 6. È possibile leggere i file FTP senza scriverli usando Python?
- 7. È possibile leggere/scrivere bit da un file usando JAVA?
- 8. Come leggere i file epub usando javascript
- 9. Leggere un file di testo locale usando Javascript
- 10. Impossibile leggere dal repository remoto
- 11. Modalità Super Dev su un server remoto
- 12. Come memorizzare 40.000 immagini usando HTML5 o PhoneGap?
- 13. interrogare la colonna binaria usando come nel server sql
- 14. Restituisci HTML o crea HTML usando javascript?
- 15. Mysql - connettersi al server remoto usando l'indirizzo IP
- 16. È possibile utilizzare TypeScript in combinazione con PhoneGap (o simili)?
- 17. È possibile modificare l'intestazione della richiesta http usando javascript?
- 18. È possibile creare un'applicazione usando Javascript su piattaforme Linux?
- 19. È possibile recuperare i dati da SQL Server usando jQuery?
- 20. Come connettersi a un server MySQL remoto usando C#?
- 21. come caricare il file sul server remoto http usando java?
- 22. Come creare file in Sdcard usando PhoneGap
- 23. È possibile connettere LocalDB SQL Server Express in remoto?
- 24. Ottieni il livello corrente della batteria usando PhoneGap o Cordova?
- 25. È possibile connettersi al protocollo di debugger remoto di Mobile Safari usando python?
- 26. Programmazione in modalità kernel usando C++ semplicistico?
- 27. Impostazione di una variabile javascript dal modello Spring usando Thymeleaf
- 28. Nel test JMeter distribuito (remoto), è possibile memorizzare il file dei risultati sul server remoto?
- 29. Modalità Tramp in emacs usando ssh config
- 30. usando setTimeout sincrono in JavaScript
possibile duplicato di [Come mostrare immagini in div che memorizzati nel db] (http://stackoverflow.com/questions/2801042/ how-to-show-images-in-div-that-stored-in-db) –
@Diodeus no, questa è una domanda JavaScript e questo è per Java. –
@Shailesh Grazie, potresti accettare come risposta? –