Gå til innhold

[Løst] Filopplasting til "remote" server


Anbefalte innlegg

Jeg har utviklet et system hvor jeg laster opp fil til en extern server/externt script, og behandler, samt lagrer filen der. Dette har ført til en rekke komplikasjoner under veis, men alle er løst, dette bortsett fra et stort problem... Jeg klarer ikke finne noen muligheter for å lage en "opplastingsbar" på server1, da opplastingen går helt utenom server1.

 

Jeg har forsøkt å finne måter for å finne ut størrelsen til temp-filen på server2 uten lykke, jeg har gravd rundt på snart hele internett skulle en tro.

 

Jeg fant noe som minnet om et håp, dette var i zend-rammeverket - la meg bare quote hva de skrev:

If you are POSTing the file to another server there is no way to know the status of this upload since the upload is done between the users browser and the remote site.

If you have access to the script that handles file upload on the other site you could use Zend_File_Transfer and Zend_ProgressBar to fetch the information on the uplad progress from the other site and display it on your page.

Note: to use Zend_ProgressBar you need APC or uploadprogress extension.

 

følgende skript er på server1:

<form action='http://server2/upload/index.php' method='post' enctype='multipart/form-data'>
<input type='file' name='video' />
<input type='submit' name='submit' value='Post video' />
</form>

 

server2 mottar jeg filen med en "standard" if(isset($_POST['submit']) { .. }

 

Jeg klarte ikke forstå hvordan zend_file_transfer fungerer, og hvor vidt jeg faktisk kan bruke det i denne situasjonen.. Håper noen har non innslag, evt. alternative metoder.

Trenger bare hjelp til å få laget en "spørring" som finner ut hvor stor tempfilen er blitt mens filopplastingen pågår - Resten fikser jeg selv.

Selv etter mange år med php sliter jeg nok mye med OOPHP, noe som gjør zend-rammeverket vanskelig å forstå.

Endret av warpie
Lenke til kommentar
Videoannonse
Annonse

Har ikke mye greie på OOP selv eller Zend, men noe du kan se på er hvertfall å bruke en ferdigkodet opplaster. som f.eks uploadify. Bruker stort sett den selv og med noen triks kan man få den til å laste opp til ekstern server, med progress bar og all funksjonalitet. Uploadify er også stort sett ganske enkelt å sette opp og tilpasse etter behov.

 

Du kan laste ned uploadify her: http://www.uploadify.com/

 

Og på stackexchange står det litt om hvordan man sender filene til en ekstern server: http://stackoverflow.com/questions/4857398/uploadify-and-flash-issue-uploading-to-remote-server

 

Kort fortalt er det som må til for å laste opp til ekstern server med uploadify å opprette en crossdomain.xml fil i roten på den eksterne serveren, samt plassere uploadify.php på den eksterne serveren. crossdomain.xml kan f.eks se slik ut:

 

<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="www.server1.com" />
<!--<allow-http-request-headers-from domain="*" headers="www.server1.com"/>-->
</cross-domain-policy>

 

Er usikker på om den kommenterte linjen kreves for uploadify, men da ligger den der hvertfall.

Lenke til kommentar

Du kan ikke bruke Zend_File_Transfer på server1, men du kan bruke det på server2. Du må sette opp et script på server2 som du kan kalle fra server1 for å få progress status.

 

Her er et eksempel som bruker APC (http://php.net/manua...ini.apc.rfc1867)

 

server1

<?php
$UPLOAD_ID = 'min unike upload id';
?>
<form action='http://server2/upload/index.php' method='post' enctype='multipart/form-data'>
<input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo $UPLOAD_ID; ?>" />
<input type='file' name='video' />
<input type='submit' name='submit' value='Post video' />
</form>

 

server2, get_upload_progress.php?upload_id=<upload_id>

<?php
$upload_id = $_GET['upload_id'];
$status = apc_fetch('upload_'.$upload_id);
header('Content-Type: application/json');
echo json_encode($status);
?>

 

Nå kan du kalle get_upload_progress fra server1 for å få statusen.

  • Liker 1
Lenke til kommentar

Du kan ikke bruke Zend_File_Transfer på server1, men du kan bruke det på server2. Du må sette opp et script på server2 som du kan kalle fra server1 for å få progress status.

 

Her er et eksempel som bruker APC (http://php.net/manua...ini.apc.rfc1867)

 

Tusen takk, jeg er så lettet nå. APC gikk kjapt å installere på alle serverene mine, samt lage klient-script som tok i bruk data fra APC :)

 

Feh, uploadify blir rett og slett for mye. Alle brukerene/klientene mine skal LETT kunne implementere scriptet, og med grunleggene kunnskap kunne endre, samt forstå hvordan det fungerer. Dermed så er det VIKTIG at det er basic, og skrevet på få linjer.

 

For å ikke nevne at uploadify er Flash... Jeg avskyr Flash (=

Endret av warpie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...