Jag tillåter användaren att ladda bilder till en sida via dragampdrop och andra metoder. När en bild tappas, använder jag URL. createObjectURL för att konvertera till en objektadress för att visa bilden. Jag återkallar inte webbadressen, eftersom jag återanvändar den. Så när det kommer dags att skapa ett FormData-objekt så att jag kan tillåta dem att ladda upp ett formulär med en av de här bilderna, kan jag sedan ändra den objektadressen till en Blob eller fil så jag kan sedan lägga till det till ett FormData-objekt frågade 9 aug 12 klockan 3:00. Tyvärr svarade BrianFreuds inte mina behov, jag hade lite annorlunda behov, och jag vet att det inte är svaret på BrianFreuds fråga, men jag lämnar det här eftersom mycket av personer kom hit med samma behov. Jag behövde något som Hur man hämtar en fil eller blob från en URL, och det aktuella korrekta svaret passar inte mitt behov eftersom det inte är korsdomän. Jag har en webbplats som konsumerar bilder från en Amazon S3Azure Storage, och där lagrar jag objekt som heter med unika identifierare: Några av dessa bilder borde hämtas från vårt systemgränssnitt. För att undvika att överföra denna trafik via min HTTP-server, eftersom det här objektet inte kräver några säkerhetsåtgärder (förutom genom domänfiltrering), bestämde jag mig för att göra en direkt begäran om användarnas webbläsare och använd lokal bearbetning för att ge filen ett riktigt namn och förlängning. 1. Första steget: Lägg till binärt stöd till jquery 2. Andra steget: Gör en förfrågan med den här transporttypen. Nu kan du använda den skapade Blob som du vill, i mitt fall vill jag spara den på disken. 3. Valfritt: Spara fil på användarens dator med FileSaver Jag har använt FileSaver. js för att spara till disken den nedladdade filen. Om du behöver uppnå det, använd det här javascript-biblioteket: Jag förväntar mig att detta hjälper andra med mer specifika behov. BrianFreud Jag fick det som inte är precis svaret på den här frågan. Men jag tror fortfarande att det är ett bra svar att lämna sedan jag kom hit och letade efter svaret på en liten annorlunda fråga 39Hur att få en fil eller blob från en URL39. Om du kontrollerar ditt eget svar finns det 10 uppskattningar på 39. Det fungerar inte om det gäller fråga om flera domäner. 39. Så det var mer än 10 personer som letade efter det. Jag bestämde mig för att lämna den här. ndash Wagner Bertolini Junior Dec 4 16 kl 11:30 Problemet är, ditt svar svarar medvetet inte denna fråga. En vanlig webbadress och en objektadress är två helt olika saker. När det gäller uppräkningar på citat fungerar inte om det är fråga om cross domain requests. quot, tror du det inte bättre att förklara varför det är bokstavligen omöjligt här, och att peka på någonstans som visar svaret på vanliga webbadresser, snarare än att förvirra saker här genom att samla normala webbadresser och objektadresser ndash BrianFreud 12 februari kl 03:46 BrianFreud ger dig gärna förslag på en redigering på mitt svar. Jag kommer att studera om ämnet, kanske missförstod jag vad som är en quotobjectURLquot vs en quotobject URLquot. Engelska är inte min infödda. Jag ska göra en undersökning om ämnet för att ge ett bättre svar. Men jag tror att det är andra som kommer hit och letar efter något annat. Jag sökte inte efter quotobjectURLquot för att komma hit, det var min poäng tidigare. Men jag har dig också. ndash Wagner Bertolini Junior 12 februari kl 4:02JavaScript Blob. Objektblober är oföränderliga objekt som representerar rå data. Filen är en derivation av Blob som representerar data från filsystemet. Använd FileReader för att läsa data från en Blob eller File. Blobs tillåter dig att konstruera fil som objekt på klienten som du kan överföra till apis som förväntar sig url istället för att kräva att servern ger filen. Du kan till exempel konstruera en blob som innehåller data för en bild, använd URL. createObjectURL () för att skapa en webbadress och skicka den webbadressen till HTMLImageElement. src för att visa bilden du skapade utan att prata med en server. KonstruktörerSänd och ta emot binära data Ta emot binära data med hjälp av JavaScript-typade arrays Egenskapen r esponseType i XMLHttpRequest-objektet kan ställas in för att ändra den förväntade svarstypen från servern. Möjliga värden är den tomma strängen (standard), arraybuffer. klick. dokumentera. json. och text. Svarsegenskapen kommer att innehålla enhetskroppen enligt responsType. som en ArrayBuffer. Klick. Dokumentera. JSON. eller sträng. Detta är null om begäran inte är fullständig eller inte lyckades. Detta exempel läser en bild som en binär fil och skapar ett 8-bitars unsigned integer array från de råa bitarna. Observera att det här inte kommer att avkoda bilden och läsa bildpunkterna. Du behöver ett png-avkodningsbibliotek för det. Ett alternativ till ovanstående metod använder Blob-gränssnittet för direkt konstruktion av en Blob med matrisbuffertdatan. Du kan också läsa en binär fil som en Blob genom att ställa in blobben till responsType-egenskapen. Ta emot binär data i äldre webbläsare Funktionen loadbinaryresource () som visas nedan laddar binärdata från den angivna webbadressen och returnerar den till den som ringer. Magiken händer i rad 5, som överstyr MIME-typen, vilket tvingar webbläsaren att behandla den som vanlig text med hjälp av en användardefinierad teckenuppsättning. Detta berättar att webbläsaren inte ska analysera den och att låta byte passera genom obearbetad. Exemplet ovan hämtar byten vid förskjutning x inom den laddade binära data. Giltigt intervall för x är från 0 till filestream. length-1. Ta emot binära data var som helst jBinary bibliotek för att arbeta med binär data i JavaScript tillåter att ladda data från någon källa med automatiskt detekterade bästa möjliga sättet på nuvarande webbläsare eller Node. js: Skicka binär data Sändningsmetoden för XMLHttpRequest har utökats för att möjliggöra enkel överföring av binär data genom att acceptera en ArrayBuffer. Klick. eller filobjekt. Följande exempel skickar skapar en textfil på flykt och använder POST-metoden för att skicka filen till servern. I det här exemplet används vanlig text, men du kan föreställa dig att data är en binär fil istället. Sänder typade arrayer som binär data Du kan skicka JavaScript-typade arrayer som binära data också. Detta bygger en 512-byte array av 8-bitars heltal och skickar det du kan självklart använda binära data. Obs! Stöd för att skicka ArrayBuffer-objekt med XMLHttpRequest har lagts till i Gecko 9.0 (Firefox 9.0 Thunderbird 9.0 SeaMonkey 2.6). Lägg till information om andra webbläsare support här. Skicka in formulär och ladda upp filer Firefox-specifika exempel Detta exempel överför binär innehåll asynkront, med POST-metoden och Firefox-icke-standardiserade sendAsBinary (). Linje 4 ställer in innehållslängdsrubriken till 741, vilket indikerar att data är 741 byte långa. Självklart måste du ändra detta värde baserat på den faktiska storleken på de data som skickas. Linje 5 använder metoden sendAsBinary () för att initiera begäran. Obs! Den här icke-standardiserade sendAsBinary-metoden anses vara avskriven från Gecko 31 (Firefox 31 Thunderbird 31 SeaMonkey 2.28) och kommer snart att tas bort. Metoden Standard Send (Blob Data) kan användas istället som förklaras ovan. Du kan också skicka binärt innehåll genom att skicka en instans av nsIFileInputStream för att skicka (). I så fall behöver du inte själv ange huvudrubriken Innehållslängd, eftersom informationen hämtas automatiskt från strömmen: Var den här artikeln användbara? Inlägg Inlägg Kategorier Läsning av binär data med jQuery Ajax Postnavigation Detta är ett exempel på hur jag kan kopiera nu en binär fil från Dokumentbibliotek till Listobjekt: uploadForm-funktion (itemID) var formTemplateUrl myaccount. sharepointMyDocLibSourceForm. dotx var filnamn Destination. dotx var listnamn MyList Chain ajax-förfrågningar mediumcoding-designwriting-better-ajax-8ee4a7fb95f. mm6rfde8a dataType binär henryalgusreading-binär - files-using-jquery-ajax var a1.ajax (url: formTemplateUrl, metod: GET, dataType: binär, processData: false), a2 a1.then (funktion (data).then () returnerar ett nytt löften console. log (Succes nedladdning fil: formTemplateUrl) Ladda upp bilagor till SharePoint-listor med REST sympmarc20160420uploading-attachments-to-sharepoint-lists-using-restcomment-135064 returnera. ajax (url: spPageContextInfo. webAbsoluteUrl apiweblistsgetbytitle (listnamn) objekt (itemID) AttachmentFilesadd (FileName fileName), metod: POST, data: data, processData: false, headers: Acceptera: applicationjson odataverbose, X-RequestDigest: document. getElementById (REQUESTDIGEST).värde, a2. klar (funktion (data) console. log (Succes uppladdad fil: filnamn)) Rodrigo V. Lagos Eustquio I8217m mottar CORS 8216Access-Control-Allow-Origin8217 inte närvarande, men min server är öppen. Tnks Hej. den här koden fungerar bra i Chrome och IE men inte i FireFox det finns min kod. ajax (typ: 8216POST8217, url: (extraDetails. data. portalContext. extraDetails. data. portalContext. 82208221) (detta).attr (8216action8217) 8220ts8221 new Datum (). GetTime () 8220amptnt8221 extraDetails. data. tenant, data: ny FormData (detta), processData: false, contentType: false, dataType: 8216binary8217).done (funktion (svar, status, xhr) alert (8216success8217) för ett filnamn var filnamn 82208221 om (response. size ampamp response. type) filnamn 8220error. xlsx8221 var disposition xhr. getResponseHeader (8216Content-Disposition8217) om (disposition ampamp disposition. indexOf (8216attachment8217) -1) var filnamnRegex filnamn ((82168221) .2n) matchar filnamnRegex. exec (disposition) om (matchar nullampamp matcher1) filnamn matches1.replace (82168221g, 8221) var typ xhr. getResponseHeader (8216Content-Type8217) var blob ny Blob (svar,) var blob svar om typof window. navi gator. msSaveBlob 8216undefined8217) IE-lösning för 8220HTML7007: En eller flera blob-URL-adresser återkallades genom att stänga blob för vilken de skapades. Dessa webbadresser löser inte längre eftersom data som stöder webbadressen har befriats.8221 window. navigator. msSaveBlob (blob, filnamn) annars var URL window. URL window. webkitURL var downloadUrl URL. createObjectURL (blob) om (filnamn) använder HTML5 adownload attribut att ange filnamn var en document. createElement (8220a8221) safari doesn8217t stöder detta men om (typeof a. download 8216undefined8217) window. location downloadUrl another a. href downloadUrl a. download filnamn document. body. appendChild (a) a. click () extraDetails. data. dialogService. showAlert (8220warning8221, 8220Unable att ladda upp alla Code set codes8221, 8221Fee schemalagd fil uppladdad. Men det finns få valideringsfel 8220, 8220Hänvisa du till filen error. xlsx som laddades ner på din maskin.8221) fileUploadSuccess sant extraDetails. data. iframeDetails. srcextraDetails. data. iframeDetails. src).fail (funktion (jqXHR, textStatus) alert (8216dialogservice efter fel 8216 dialogService) fileUploadSuccess false extraDetails. da ta. iframeDetails. srcextraDetails. data. iframeDetails. src extraDetails. data. dialogService. showAlert (8220warning8221, 8220Error uppladdning Code set8221, jqXHR. status 8220: 8221 (jqXHR. responseText. jqXHR. responseText. 8216 ingen svartext från tjänsten. Generiskt error8217))) arguments0.preventDefault () returnerar falskt Kan någon hjälpa mig med det här
No comments:
Post a Comment