Autor Zpráva
galathas
Profil
Zdravim vsechny php+ lidi,

chtel bych poprosit o radu:

Jde vůbec v PHP (nebo nějakém podobném jazyce) provést komunikaci
"SERVER to CLIENT" tak, aby příslušný skript na serveru mohl přistoupit k disku
a souborům na počítači klienta ?

Mám na mysli následující situaci (ZJEDNODUŠENĚ):

1. Klient si v prohlížeči vyžádá SCRIPT1.PHP
2. SCRIPT1.PHP přistoupí ke klientovi a zobrazí v prohlížeči adresářovou strukturu pevného disku klienta.
3. Klient vybere patřičné soubory a SCRIPT1.PHP odešle data (např. skrz form) na server
4. SCRIPT1.PHP zpracuje data na serveru a zobrazi výsledek operace.

Pídil jsem se po nějakých informacích snad všude, ale všichni řeší situaci bud uploadem "po jednom" přes naprosto neschopný prvek formuláře <input type='file'... nebo přes libovolný FTP program...

Učím se PHP asi 2 měsíce, takže sem začátečník, ale docela mě vyděsilo, že není jednoduchá možnost (nebo ano ?) jak přes jednoduché webové rozhraní nahrát třeba 100 obrázků na server...

Nechce se mi tomu věřit, takže moc prosím všechny zkušené PHP programátory o pomoc a o radu s tímto problémem. Určitě jsem něco přehlídl, věřím , že je nějaké řešení.

Předem děkuji všem, kteří přispějí radou, či pomocí.

Přeju pěkný den.
nightfish
Profil
ne, nejde to (už z toho principu, že se skript provádí na serveru a do klienta putuje jen HTML)

samozřejmě možností je na klienta hodit nějaký FTP server a ze serveru přistoupit přes FTP (ale to se nám pak role server/klient obrací)
galathas
Profil
Děkuji moc za odpověď,

jakto že je možné komunikovat PC to PC skrze různé utility, shell, a všemožné "Remote-desktop" programy a v PHP to nejde ? Co třeba Python, Perl ? Jak jsem zjistil tak skrz ASP (resp. ActiveX) to možné je...ale tam je pravda, že je nutno instalovat program/komponentu na klienta (před použitím)

Každopádně díky moc za pomoc !
thingwath
Profil
Ano, v tom je ten vtip, potřebuješ něco na klientovi ;-)
koudi
Profil
Nejde nejde nejde. Pochop, sou to serverový aplikace, který se dostanou jenom k sobě na server, nikam jinam nemůžou. Komunikace dvou pc je trochu něco jinýho, to do toho moc nepleť.
Jediná šance je asi použít ty ActiveX componenty, ale to se musí na klientovi nainstalovat a jede to jen v IE.
Leo
Profil
Komunikace server - klient v om smyslu, ze to server cele iniciuje, spusti a on je ten aktivni je blbost. Musel byste PHP dat do role klienta (coz jde snadno) a na domacim pc uzivatele mit server (coz je horsi, ne kazdy si umi/chce nainstalovat treva Apache, ftp server atd.). Leo
Leo
Profil
"Učím se PHP asi 2 měsíce, takže sem začátečník, ale docela mě vyděsilo, že není jednoduchá možnost (nebo ano ?) jak přes jednoduché webové rozhraní nahrát třeba 100 obrázků na server...

Nechce se mi tomu věřit, takže moc prosím všechny zkušené PHP programátory o pomoc a o radu s tímto problémem. Určitě jsem něco přehlídl, věřím , že je nějaké řešení."

V tom pripade proste prohlizec webovych stranek neni ten vhodny klient, je staveny na jine veci, kafe varit neumi - soubory se obecne prenasi pres ftp protokol, takze sikovny je treba nejaky ftp klient. Leo
thingwath
Profil
Není to nutně blbost, jenom je to v prostředí webu a http dosti obtížně (spíš vůbec) realizovatelné :-)
izsak
Profil
galathas
ASP != ActiveX :)

PHP je serverová technológia.

Internet Explorer má príjemnú "značku" webbot (väčšinou ju pridáva FrontPage), ktorá vie zobraziť aj pole pre výber viacerých súborov naraz (veľmi dobrá vec na SharePointe, ale samozrejme ľudia s iným prehliadačom nemajú možnosť nahrať na server dva súbory naraz...).

Na kounikáciu client/server treba c/s technológiu, ako napr. ftp, ale veľmi vhodný na toto je aj .NET Remoting alebo Windows Communication Foundation :)
CyberLuke
Profil *
Anebo pokud to chces zdarma a volne sirit, zkus Firefox a nauc se XUL - je to jako Javascript a muzes udelat cokoliv - nejen praci s diskem. Tady je Flock - ukazka jak lze predelat kompletne Firefox diky XUL a vytvorit tak novy produkt zamereny na uploadovani obrazku: http://flock.com/ ....tyhle jednoduche veci jako upload obrazku s tim ze na strance zobrazite i seznam slozek od uzivatele na PC lze zaridit pres rozsireni, ktere si muzete zdarma stahnout na https://addons.mozilla.org/firefox/ a nainstalovat klidne na sve webove strance, takze po 2 kliknutich to bude i u klienta. Bude tak fungovat klasicky upload i vas novy lepsi zpusob.
galathas
Profil
Zdravím php+ komunitu ! :-)

Všem vám chci moc poděkovat za pomoc a skvělé tipy a nápady na řešení tohohle problému. Jak jsem to vše prošel, pochopil jsem, že na komunikaci server - klient - server musi být (především) z hlediska bezpečnosti nainstalován komunikační program na klientovi, který pak komunikuje se serverem.

Chtěl bych do seznamu vašich návrhů doplnit ještě jednu možnost, která je poměrně jednoduchá, rozšířená, a jak jsem byl ponořen do php , tak mě vůbec nenapadla :-) .

Mám na mysli použítí Flash scriptu. Flash od verze 8 totiž má komponentu FileReference a FileReferenceList, které umí vyvolat "browse" dialog na klientovi, přičemž první povolí vybrat jen jeden soubor/dialog a druhá povolí klientovi vybrat libovolný počet souborů. Lze u nich nastavit masku pro povolené soubory, a poté se vyvolá metoda fileRef.upload(url) - url= server-side skript (php), které už se postará o přesunutí souborů z dočasné složky jinam, atd. Samotný požadavek na server vyvolává konkrétní instance fileReference při volání metody upload. Flash tedy sám odešle přes HTTP POST data na server. Omezení velikosti jednoho souboru pro upload je v této API(fileReference) 100MB.

Každopádně vás všechny moc zdravím a děkuju za podněty, mějte se fajn a užívejte pěkný zbytek léta!

P.S. Zabýval jsem se tímto poslední 3dny(neb jsem v ActionScriptu&Flash nováček) a nakonec jsem to rozchodil ku spokojenosti :-) Takže kdyby jste někdo chtěl zakomponovat do svých PHP skriptů upload více souborů přes webové rozhraní, rád pomůžu. V podtatě jediná nepříjemná podmínka na klienta je nutnost mít nainstalován ( nebo donutit klienta stáhnout ) Flash Player v8 nebo vyšší ...
Zlomenina
Profil
Celkem spolehlivým řešením se stává použití AJAX. Asynchronous Javascript And XML. Stačí zkusit něco najít v googlu. Doporučuji wikipedii. Klíčová slova XMLHttpRequest a ActiveXObject. Například konstrukce takového klienta v javascriptu :

var Client;

Client = false;

if( window.XMLHttpRequest ) {

try {

Client = new XMLHttpRequest();

} catch(e) {

Client = false;
}
}
if( window.ActiveXObject ) {

try {

Client = new ActiveXObject("Msxml2.XMLHTTP");

} catch(e) {

try {

Client = new ActiveXObject("Microsoft.XMLHTTP");

} catch(e) {

Client = false;
}
}
}
ActiveXObject je v IE od 5.0, XMLHttpRequest je v Mozille od 1.0( Netscape od 7.0 ) a na MAC je to same v Safari od 1.2.
Jinak řečeno není to úplně výstřel do tmy.
mila
Profil
Z php se dá přistupovat na disk, ale musí si ho client na disku pustit.

Není možné, aby prohlížeč na vyžádání servu posílal nějaká data z disku klienta. Jen si to představ - přijdeš na můj web a já si prohlížím veškeré tvé dokumenty, co máš na počítači uložené.

Pokud jde o to nahrát více souborů najednou, řešení existuje ve flashi http://www.funnyservices.net/upload/
Toto téma je uzamčeno. Odpověď nelze zaslat.

0