Datuve :: Forums :: Arhīvs :: JavaScript XMLHttpRequest respone save to file

Datuve

Mana Datuve

Reģistrācija | Noteikumi | Paroles atjaunošana



Forums

Ieskaties


Raksti

Lietotāji online

Lietotāji online: 91

Reģistrētie lietotāji online: 0

Viesi online: 91

Datuve.lv video
Top.LV

JavaScript XMLHttpRequest respone save to file

Ievietoja: karuuzo @ 2009.07.07 15:42  

Uzdevums ir pavisam vienkāršs, bet realizācija varētu būt sāpīgāka (vismaz no WebBrowzera puses). Tātad, ir serveris, kuram iedod HTTPRequestā XML un viņš atgriež Respone XML. Man šo Respone vajag saglabāt failā, apejot kaut kādus Browzera vizuālos elementus (iemesls - faila izmērs 300MB :)

Šobrīd man ir uztaisīta ļoti primitīva HTML lapa ar 3 laukiem un vienu pogu. Vienā laukā servera URL, otrā Request, trešajā, pēc pogas nospiešanas, tiek iemests Response. Ideja bija uztaisīt kaut ko tipa "Submit and Save", kurš piedāvātu Response saglabāt failā (smuki būtu, ja atvērtos FileSave dialogs, ja nē - var kaut konstanti ielikt). Failu saglabāšanas iespēju atradu tikai IE, bet liela izmēra response saglabāšanu tā arī neesmu sapratis. Nezinu pat īsti, no kura gala ķerties klāt.

Vienkāršākais it kā būtu "Scripting.FileSystemObject" un tad vienkārši file.Write (XMLHttpRequest.responseText), bet stulbākais tas, ka nesanāk izveidot to FileSystemObject. Kļūda - nu kā jau ēzelišā kļūda - nevar un viss :) Ja arī sanāktu, nav skaidrs, vai tie 300MB izies cauri :)
Ir kādas idejas, uz kuru pusi skatīt?

m

PS. Papildus atjautības uzdevums, kāpēc IE strādā ar lokālu HTML, kurā izmantots XMLHttpRequest, bet FF un Opera (citus nepārbaudīju) strādā tikai no HTTP servera?

Komentāri:

#1 usver @ 2009.07.07 15:50

Ja pareizi sapratu, tu gribi lielu datu kluci pieglabāt caur brouzeri pie klienta.
Scripting.Filesystem object - tu neesi skatījies pareizo platformu. Tas attiecas uz ASP - servera pusē. Faila saglabāšanu lokāli iekš IE var realizēt  ar ADODB.Stream

Bet, ja response ir liela, tad neāksties, taisi ar servera puses programmēšanas valodu, kas savāc no servera visu un pēc  tam parāda to lietotājiem draudzīgā formā. Padomā taču par normāliem jūzeriem, kam ātrums ir max 1MB/s pa Latviju. viņi ko - 5min gaidīs responsi, vai?

#2 usver @ 2009.07.07 15:52

btw, ja gribi apiet brouzera GUI - vari taisīt tieši to pašu ar WSCript. lietotājs uzkliko uz *.JS (*.VBS) failiņa, gaida, saņem alertu, ka "300 MB trojānis ir pārkačāts pie jums. Vai vēlaties to izpildīt tagad?"

#3 karuuzo @ 2009.07.07 15:55

Nu jā, aizmirsu piebilst, serveris ir tālu un neaizskarams :) T.i., man nav ne tikai pieejas serverim, bet nav pat ne mazākās iespējas iegūt sīkāku tehnisku informāciju par to, kā tikai apmaiņas protokols XMLā. Es šoreiz esmu klienta pusē, kuram vajag dabūt to response.

m

#4 usver @ 2009.07.07 16:00

var uzlikt savu PHP skriptu uz sava servera, kas izdod remūtā XML saturu vnk ar header('content-type: application/octet-stream; filename="failish"').
Lietotājam būs parasta lejupielāde ar progresa joslu.

btw, kaut ko darīt slēpti no lietotāja acīm var ar Set objIE = CreateObject("InternetExplorer.Application"). Bet - tas ir daudziem nepieejami, jo var būt disāblēts.

#5 karuuzo @ 2009.07.07 16:19

Šis ir paredzēts ļoti ierobežotai lietošanai, precīzāk - ČP gadījumiem priekš adminiem (ne sisadminiem), no kuriem viens ČP ir šis lielais fails, uz kura standarta progs nomira :) Gana dīvaini nomira, ņemot vērā to, ka iepriekš ar ~700MB tika galā. Bet ne pat to ir stāsts, stāsts ir par to, ka dažreiz rodas nestandarta situācijas un tad vajag ar rociņu saklabināt pieprasījumus un savest kārtībā statusus. Šoreiz vajadzēja novilkt lielo datu kluci, kuru neizdevās izdarīt ar standarta progu. Ar to gribu teikt, ka taisīt kaut kādu sarežģītu risinājumu, ar papildus PHP serveriem utt. šai gadījumā nav lietderīgi. Līdz šim bija vienkāršs HTML failiņš, ko atver un lieto. Gribēju pielikt klāt saglabāšanu failā un viss.

m

#6 karuuzo @ 2009.07.08 10:57

Nu, nevienam nav vēlmes vēl padalīties ar labām idejām ;)

m