Monday 4 September 2017

Javascript Blob Tipo Binarie Options


Sto permettendo all'utente di caricare immagini in una pagina tramite dragampdrop e altri metodi. Quando un'immagine è caduto, Im usando URL. createObjectURL per convertire un URL oggetto per visualizzare l'immagine. Non sto revoca l'url, come faccio io riutilizzarlo. Così, quando arriva il momento di creare un oggetto formdata in modo da poter permettere loro di caricare un modulo con una di quelle immagini in esso, c'è qualche modo per poi invertire tale URL oggetto di nuovo in un Blob o file in modo posso quindi aggiungere a un oggetto formdata chiesto 9 12 agosto alle 3:00 Purtroppo BrianFreuds rispondere pretende molto adatta alle mie esigenze, ho avuto un po 'bisogno diverso, e so che non è la risposta per BrianFreuds domanda, ma lascio qui perché un sacco di persone arrivati ​​qui con il mio stesso bisogno. Avevo bisogno di qualcosa di simile a Come ottenere un file o blob da un URL, e l'attuale risposta corretta non adatta alle mie esigenze perché la sua non cross-domain. Ho un sito web che consuma le immagini da un'amazzone S3Azure bagagli, e ci devo conservare oggetti con nome con uniqueidentifiers: Alcune di queste immagini dovrebbero essere scaricato dal nostro sistema di interfaccia. Per evitare di passare il traffico attraverso il mio server HTTP, dal momento che questi oggetti non richiede alcuna sicurezza a cui accedere (se non per il filtraggio dominio), ho deciso di fare una richiesta diretta sul browser degli utenti e utilizzare l'elaborazione locale per dare un nome al file vero e estensione. 1. Primo passo: Aggiungere il supporto binario a jQuery 2. Secondo passo: fare una richiesta utilizzando questo tipo di trasporto. Ora è possibile utilizzare il Blob creato come si vuole, nel mio caso voglio salvarlo su disco. 3. Opzionale: Salvare file sul computer di utenti usando FileSaver ho usato FileSaver. js per salvare su disco il file scaricato, se è necessario per realizzare questo, si prega di utilizzare questa libreria javascript: mi aspetto questo per aiutare gli altri con esigenze più specifiche. BrianFreud ho preso che non è esattamente la risposta di questa domanda. Ma io continuo a pensare che la sua una buona risposta a lasciare da quando sono qui a cercare la risposta di una piccola domanda diversa 39How per ottenere un file o da un blob URL39. Se si seleziona si possiede risposta, ci sono 10 upvotes su 39It lavoro doesn39t in caso di richieste di domini incrociati. 39. Così, più di 10 persone arrivati ​​qui in cerca di questo. Ho deciso quindi di lasciare qui. ndash Wagner Bertolini Junior 4 dicembre 16 alle 11:30 Il problema è che la vostra risposta doesn39t consapevolmente rispondere a questa domanda. Un URL normale e un URL oggetto sono due cose completamente diverse. Per quanto riguarda la di upvotes su quotIt lavoro doesn39t in caso di croce requests. quot dominio, wouldn39t pensi che meglio spiegare perché that39s letteralmente impossibile qui, e per puntare a un posto che non mostrano la risposta per gli URL normali, piuttosto che le cose confuse qui da una confusione URL normali e oggetto URL ndash BrianFreud 12 febbraio alle 03:46 BrianFreud si sentono liberi di proporre una modifica alla mia risposta. Studierò su questo argomento, forse ho capito male quello che è un quotobjectURLquot vs un URLquot quotobject. L'inglese non è la mia nativa. Farò una ricerca sull'argomento per dare una risposta migliore. Ma penso che sono altri che vengono qui in cerca di qualcosa di diverso. Non ho ricerca di quotobjectURLquot per arrivare qui, questo era il mio punto prima. Ma ti ho preso troppo. ndash Wagner Bertolini Junior 12 febbraio a 4: 02JavaScript Blob. Blobs oggetti sono oggetti immutabili che rappresentano dati grezzi. Il file è una derivazione di Blob che rappresenta i dati dal file system. Utilizzare FileReader per leggere i dati da un Blob o File. Blobs permettono di costruire il file come oggetti sul client che è possibile passare alle API che si aspettano gli URL invece di richiedere al server fornisce il file. Ad esempio, è possibile costruire un blob contenente i dati per una foto, utilizzare URL. createObjectURL () per generare un URL, e passare l'URL di HTMLImageElement. src per visualizzare l'immagine che hai creato senza parlare con un server. ConstructorsSending e ricezione di dati binari Ricezione dati binari utilizzando JavaScript digitato array La proprietà esponseType R dell'oggetto XMLHttpRequest può essere impostato per cambiare il tipo di risposta prevista dal server. I valori possibili sono la stringa vuota (default), ArrayBuffer. blob. documento. JSON. e il testo. La proprietà di risposta conterrà il corpo dell'entità secondo il responseType. come ArrayBuffer. Blob. Documento. JSON. o una stringa. Questo è nullo se la richiesta non è completa o non ha avuto successo. Questo esempio legge un'immagine come un file binario e crea un array intero senza segno a 8 bit dei byte prime. Si noti che questo non decodificare l'immagine e leggere i pixel. Avrete bisogno di una libreria di decodifica png per questo. Un'alternativa al metodo precedente utilizza l'interfaccia Blob costruire direttamente un Blob con i dati ArrayBuffer. Inoltre è possibile leggere un file binario come un Blob impostando il blob stringa alla proprietà responseType. Ricezione di dati binari in vecchi browser La funzione loadbinaryresource () mostrato sotto carichi di dati binari dall'URL specificato, riportandolo al chiamante. La magia avviene in linea 5, che sostituisce il tipo MIME, costringendo il browser di trattarlo come testo semplice, utilizzando un set di caratteri definito dall'utente. Questo dice al browser di non analizzarlo, e lasciare che i byte passano attraverso non trasformati. L'esempio precedente recupera il byte all'offset x nei dati binari caricati. L'intervallo valido per x è da 0 a filestream. length-1. Ricezione di dati binari biblioteca ovunque jBinary per lavorare con dati binari in JavaScript permette di caricare i dati da qualsiasi fonte con rilevata automaticamente modo migliore supportato su browser corrente o Node. js: L'invio di dati binari Il metodo di trasmissione del XMLHttpRequest è stato esteso per consentire la trasmissione facile di dati binari accettando un ArrayBuffer. Blob. o un oggetto del file. L'esempio seguente invia crea un file di testo on-the-fly e utilizza il metodo POST per inviare il file al server. Questo esempio utilizza testo semplice, ma si può immaginare i dati essendo un file binario, invece. L'invio di array tipizzati come dati binari È possibile inviare JavaScript array tipizzati come dati binari pure. Questa è la costruzione di una matrice di 512 byte di interi a 8 bit e l'invio è possibile utilizzare qualsiasi youd dati binari, come, naturalmente. Nota: Il supporto per l'invio di oggetti ArrayBuffer utilizzando XMLHttpRequest è stato aggiunto al Gecko 9.0 (Firefox 9.0 Thunderbird 9.0 SeaMonkey 2.6). Aggiungere informazioni su altri browser supportano qui. Invio dei moduli e il caricamento dei file esempi Firefox-specifici Questo esempio trasmette contenuto binario in modo asincrono, utilizzando il metodo POST, e FirefoxS non standard sendAsBinary (). Linea 4 imposta l'intestazione Content-Length a 741, a indicare che il dato è lungo 741 byte. Ovviamente è necessario modificare questo valore in base alla dimensione effettiva dei dati inviati. Linea 5 utilizza il metodo sendAsBinary () per avviare la richiesta. Nota: questo metodo sendAsBinary non standard è considerato deprecato come di Gecko 31 (Firefox 31 Thunderbird 31 SeaMonkey 2.28) e sarà rimosso al più presto. Il metodo standard di trasmissione (dati Blob) può essere usato invece come spiegato sopra. È inoltre possibile inviare il contenuto binario passando un'istanza del nsIFileInputStream per inviare (). In tal caso, non dovete impostare il Content-Length intestazione te, come l'informazione viene recuperata dal flusso automaticamente: Questo articolo è stato helpfulRecent Messaggi Categorie lettura di dati binari utilizzando jQuery Ajax Messaggio di navigazione Questo è un esempio di come ora posso copiare un file binario dalla libreria di documenti nella Lista voce: la funzione uploadForm (itemID) richieste var formTemplateUrl myaccount. sharepointMyDocLibSourceForm. dotx var fileName Destination. dotx var nomelista MyList catena Ajax mediumcoding-designwriting-meglio-ajax-8ee4a7fb95f. mm6rfde8a dataType binario henryalgusreading-binary - file-con-jquery-ajax var a1.ajax (url: formTemplateUrl, metodo: GET, dataType: binario, processData: falso,), a2 a1.then (function (dati).poi () restituisce una nuova promessa console. log (successo il download del file: formTemplateUrl) caricamento degli allegati alle liste di SharePoint utilizzando REST sympmarc20160420uploading-attacchi-to-SharePoint-liste-con-restcomment-135.064 ritorno. ajax (url: spPageContextInfo. webAbsoluteUrl apiweblistsgetbytitle (listname) articoli (itemID) AttachmentFilesadd (nomefile nomefile ), metodo: POST, dati: i dati, processData: false, intestazioni: Accettiamo: applicationjson odataverbose, X-RequestDigest: document. getElementById (REQUESTDIGEST).value, a2.done (function (dati) console. log (Success file inserito: fileName)) Rodrigo V. Lagos Eustquio I8217m ricevere CORS 8216Access-Control-allow-Origin8217 non è presente, ma il mio server è tutto aperto. Tnks Ciao. questo codice funziona bene in Chrome e IE, ma non in Firefox c'è il mio codice. ajax (tipo: 8216POST8217, url: (extraDetails. data. portalContext extraDetails. data. portalContext 82.208.221) (questo).attr (8216action8217) 8220ts8221 nuovo.. . Date () getTime () 8220amptnt8221 extraDetails. data. tenant, dati: nuove formdata (questo), processData: falso, contentType: falso, dataType: 8216binary8217).done (function (risposta, lo stato, XHR) alert (8216success8217) controllo per un nome di file var nome del file 82208221 se (response. size ampamp response. type) il nome del file 8220error. xlsx8221 var disposizione xhr. getResponseHeader (8216Content-Disposition8217) se (disposizione ampamp disposition. indexOf (8216attachment8217) -1) filenamen var filenameRegex ((82.168.221) .2n) var corrisponde filenameRegex. exec (disposizione) se (partite nullo ampamp matches1) il nome del file matches1.replace (82168221g, 8221) di tipo var xhr. getResponseHeader (8216Content-Type8217) var blob nuova blob (risposta,) risposta var blob se ( typeof window. navigator. msSaveBlob 8216undefined8217) IE soluzione per 8220HTML7007: uno o più URL blob sono stati revocato chiudendo il blob per cui sono stati creati. Questi URL non saranno più risolvere in quanto i dati che sostengono l'URL è stato freed.8221 window. navigator. msSaveBlob (blob, il nome del file) altro var URL window. URL window. webkitURL var downloadURL URL. createObjectURL (blob) se (nome del file) utilizzare HTML5 AScaricare attributo per specificare il nome del file var un supporto doesn8217t document. createElement (8220a8221) safari questo ancora se (typeof a. download 8216undefined8217) window. location downloadURL altro a. href downloadURL a. download nome document. body. appendChild (a) a. click () extraDetails. data. dialogService. showAlert (8220warning8221, 8220Unable per caricare tutto il codice impostato codes8221, file di pianificazione 8221Fee caricato. Ma ci sono alcuni errori di convalida 8220, 8220Please fare riferimento al file error. xlsx scaricato sul vostro machine.8221) fileUploadSuccess allarme vero extraDetails. data. iframeDetails. srcextraDetails. data. iframeDetails. src).fail (function (jqXHR, textStatus) (8216dialogservice dopo l'errore 8216 dialogService) fileUploadSuccess falsa extraDetails. data. iframeDetails. srcextraDetails. data. iframeDetails. src extraDetails. data. dialogService. showAlert (8220warning8221, 8220Error Codice caricando set8221, jqXHR. status 8220: 8221 (jqXHR. responseText. jqXHR. responseText. 8216no testo di risposta dal servizio. Generico error8217))) arguments0.preventDefault () return false Qualcuno mi può dare una mano mentre questo

No comments:

Post a Comment