Switch to full style
Forum dyskusyjne poświęcone zagadnieniom związanym z językami JavaScript, VBScript i podobnym
Odpowiedz

zapis do pliku przez skrypty

1 maja 2004, o 10:47

1 maja 2004, o 12:45

raczej to podpada pod jave
ale tak czy tak plik zapisze sie w tymczasowych

3 maja 2004, o 23:07

moze byc zapisany gdziekolwiek... no tylko jak?
javy akurat nie znam :(
w javascript sie troche orientuje wiec jak masz jakis konkretny pomysl to bylbym wdzieczny ( albo chociaz jakis link do strony na ktorej moglbym znalezc jakies interesujace mnie informacje)

4 maja 2004, o 00:52

4 maja 2004, o 17:16

5 maja 2004, o 21:56

6 maja 2004, o 19:44

Staryyyyyyyyyyyy to jest dokladnie to czego szukalem :D wielkie dzieki :!:
Pierwszy skrypt pod xp tworzy plik, tylko ze pusty:(
no ale to niewazne, bo ten drogi dziala dokladnie tak, jak chcialem. Sprawdzilem go na serwerze i wszystko jest ok :D .
Nie dodaje nowych linii, otwiera sie okienko do zapisu do wybranego katalogu i pliku. Po prostu tak jak powinno byc :) !
Jeszcze raz dzieki!

6 maja 2004, o 23:43

Fajnie, że pomysł na coś Ci się przydał. Niedobrze jednak, że na XP nie działa pierwszy przykład, bo na FSO bazuje z kolei mój serwis (off-line).

Ale to dziwne co piszesz... Skoro plik został utworzony bezbłędnie, nie ma żadnego powodu, dla którego miałby być pusty (spodziewałem się raczej odmowy dostępu do dysku). Możesz spróbować ponownie? Poniżej troszkę rozbudowany test - utworzy plik c:\test1.txt, zapisze do niego tekst, zamknie plik, po czym otworzy go ponownie i odczyta. Na ekranie wyświetli efekty poszczególnych kroków.

<SCRIPT TYPE="text/Jscript" LANGUAGE="JScript">
var oFSO=new ActiveXObject('Scripting.FileSystemObject');
document.write('FSO: '+typeof(oFSO));
var oPlikTS=oFSO.CreateTextFile('c:\\test1.txt', true, false);
document.write('<BR>TextStream: '+typeof(oPlikTS));
oPlikTS.Write('To jest tekst w pliku testowym');
document.write('<BR>Kolumna: '+oPlikTS.column);
oPlikTS.Close();
var oFile=oFSO.GetFile('c:\\test1.txt');
document.write('<BR><BR>Nazwa: '+oFile.Name);
document.write('<BR>Wielkość: '+oFile.Size);
document.write('<BR>Utworzony: '+oFile.DateCreated);
oPlikTS=oFile.OpenAsTextStream(1, 0);
document.write('<BR>'+oPlikTS.ReadAll());
oPlikTS.Close();
</SCRIPT>

I jaki jest efekt..?

Pozdrawiam
Paweł Rajewski

7 maja 2004, o 02:14

ostatni przyklad dziala bez zarzutu:)
co wiecej, sprawdzilem jeszcze raz ten pierwszy i... tez dziala :?
nie mam pojecia dlaczego wczesniej nie zapisywalo? moze gdzies tam namieszalem :oops:
podsumowujac: wszystkie trzy skrypty dzialaja!

w pierwszym i ostatnim przed zapisem pojawia sie alert() z tekstem mowiacym, ze "interakcja formantu activX z innymi czesciami tej strony moze byc niebezpieczna! czy chcesz zezwolic na interakcje?" po wybraniu tak zapisuje i juz... :lol:

7 maja 2004, o 16:14

Dzięki "Student", no to pomogliśmy sobie wzajemnie :-)

Uwagi do skryptów:

1. FileSystemObject działa TYLKO off-line. Tzn. można z niego korzystać na stronie HTML uruchomionej z dysku lokalnego albo w samodzielnym skrypcie *.js lub *.vbs (oczywiście też uruchomionym lokalnie). FSO nie działa na stronie ściągniętej z Sieci. Natomiast w aplikacji HTA działa bez komunikatu z ostrzeżeniem.

2. Pomysł z automatycznym "zapisywaniem jako" wcale nie jest taki pewny. Zapisuje po prostu bieżącą stronę HTML w formie pliku tekstowego, czyli pomijając znaczniki. Zauważyłeś pewnie, że skrypt usuwa tytuł strony - bo tytuł traktowany jest jak tekst i dopisywany do pliku. Gdyby w sekcji BODY znajdował się jakiś inny tekst, też należałoby go usunąć przed zapisem.

Jako że pomysł bazuje na gotowej funkcji przeglądarki, może dać nieprzewidziane efekty gdyby z czasem zmieniono działanie funkcji "zapisz jako". Być może kolejny Explorer (7,8,9...) zacznie dopisywać do pliku tekstowego datę albo adres (podobnie jak dzieje się to już dziś przy zapisywaniu jako plik HTML). W sumie cały ten pomysł to takie łatanie...

3. Oczywiście wszystko działa tylko w Internet Explorerze.

Pozdrawiam
Paweł Rajewski
Odpowiedz