[PHP] Vantevoren de tmp_name van een upload weten?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een website waar men wat up kan loaden.

Nu vraag ik me af of ik vantevoren kan weten wat de tmp_name van de file gaat zijn zodra de upload begint.

Ik draai Debian, en zodra er wat geupload wordt verschijnt er in /tmp een filetje php* (waarbij * een willekeurige string is). Dit is dus de tmp_file.

Uiteraard al gezocht e.d., maar kan er weinig over vinden.

Iemand een idee :) ?

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Waarom zou je dat van tevoren willen weten?

Misschien probeer je namelijk een wiel opnieuw uit te vinden :P

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik kan me niet voorstellen waarom je een bestandsnaam van een bestand dat nog niet bestaat zou willen weten inderdaad. Leg de gedachte hierachter eens uit? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De gedachte hierachter is dat je tijdens de upload de verstreken tijd en de grootte van het tot dan toe geuploade bestand bepaald om zo de snelheid te berekenen :)

Je kan wel het nieuwste bestand uit /tmp pakken wat begint met php* maar dat is natuurlijk geen zekerheid; vooral niet als het wat drukker wordt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Op een andere manier lijkt het me niet mogelijk. Bedenk je sowieso wel dat de pagina waar je naartoe post pas geopend wordt op het moment dat je klaar bent met uploaden. Je zou dus een AJAX oplossing moeten vezinnen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Blaise
  • Registratie: Juni 2001
  • Niet online
Ik heb me ook verdiept in een progressbar met PHP/AJAX. De uitkomst van die verdieping was dat je de totale bestandsgrootte niet kan weten, en dus ook geen progressbar kan laten zien, tenzij je PHP patcht of gebruik maakt van een CGI-script.

Voor mij was dat geen optie, en ik heb het opgelost met een (rigoureus) aangepaste versie van deze Flash uploader.

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Van php.net:
$_FILES['userfile']['size']
De bestandsgrootte in bytes.

$_FILES['userfile']['tmp_name']
De tijdelijke naam van het bestand, dit is ook de plaats waar het bestand tijdelijk is opgeslagen totdat het script er iets mee doet. Dit bestand wordt weggehaald zodra het script eidigt.
Zelf geen ervaring mee, maar een AJAX achtige oplossing zou volgens mij perfect in staat moeten zijn om server variabelen op te vragen.? Zie ook File upload

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

FragFrog schreef op woensdag 28 juni 2006 @ 23:00:
Van php.net:


[...]


Zelf geen ervaring mee, maar een AJAX achtige oplossing zou volgens mij perfect in staat moeten zijn om server variabelen op te vragen.? Zie ook File upload
Nee dus, want het request komt pas bij PHP aan als de complete file is geupload. Dat is dan ook de bron van dit probleem ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Spider.007 schreef op woensdag 28 juni 2006 @ 23:03:
[...]

Nee dus, want het request komt pas bij PHP aan als de complete file is geupload. Dat is dan ook de bron van dit probleem ;)
Doh :+ Ging er vanuit dat't bestand eerst ingelezen werd en de tempfile aangemaakt werd.. 8)7

Tja, dan zit je waarschijnlijk vast aan activeX / flash achtige oplossing gok ik.. Alas :)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Solopher
  • Registratie: December 2002
  • Laatst online: 11-09 14:55
Misschien dat je hier iets aan hebt:
http://php5.bluga.net/UploadProgressMeter/demo.php

Het is wel php5 (Maar aangezien je een eigen machine hebt lijkt met dit niet een altergroot probleem).
Het project -> http://bluga.net/projects/uploadProgressMeter/

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op woensdag 28 juni 2006 @ 19:56:
Bedenk je sowieso wel dat de pagina waar je naartoe post pas geopend wordt op het moment dat je klaar bent met uploaden. Je zou dus een AJAX oplossing moeten vezinnen.
Dit wilde ik gaan doen door middel van een popupje; welke ik sluit door middel van JavaScript zodra de upload klaar is in het "main" venster.

Ondertussen heb ik wat intessante linkjes gevonden:

http://sean.treadway.info/demo/upload/ --> Werkt met Ruby. Ik heb Ruby even geinstalleerd (Omg wat hou ik toch van Debian, apt-get install ruby en draaien maar _/-\o_ ) maar heb deze versie zo gauw nog niet aan de praat gekregen aangezien de documentatie suckt en de source code beschadigd is (althans daar lijkt het op :? ).

http://uber-uploader.sourceforge.net/ --> Deze heb ik inmiddels aan de gang. Dit project is ook alive and kicking. Werkt met Perl samen, en ik moet zeggen dat het erg goed werkt. Makkelijke installatie en retesnel.

Iemand verder nog suggesties :) ?

Acties:
  • 0 Henk 'm!

  • Blaise
  • Registratie: Juni 2001
  • Niet online
Zoals ik al aangaf in mijn eerdere post kan een progressiebalk niet met alleen PHP/JavaScript omdat PHP geen streams kan checken, en alleen met ranzige code kan uitvinden welk bestand in de tmp map door jou wordt upgeload. PHP kan enkel checken of een bestand nog groter wordt, wat erop wijst dat de upload nog bezig is en evt. de uploadsnelheid. PHP kan niet voorspellen hoe groot dat bestand wordt, en dus ook geen progressiebalk weergeven. Daar heb je JAVA, CGI of Flash voor nodig. Van ASP weet ik het niet.

Het gegeven voorbeeld van http://sean.treadway.info/demo/upload/ geeft dan ook geen progressie weer, alleen een balk die aangeeft dat het uploaden nog bezig is.Oftewel zoek zelf.

[ Voor 6% gewijzigd door Blaise op 29-06-2006 14:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry hoor :/

De uberuploader (http://uber-uploader.sourceforge.net/ ) werkt bij mij tot nu toe het best en ik ga hem nu aanpassen naar mijn wensen. Het project uberuploader is ook nog in volle gang en dat vind ik ook wel fijn met het oog op bugs e.d.

Acties:
  • 0 Henk 'm!

Verwijderd

Kun je niet met javascript de grootte van een bestand uitlezen?

Acties:
  • 0 Henk 'm!

  • TheBorg
  • Registratie: November 2002
  • Laatst online: 20-09 18:24

TheBorg

Resistance is futile.

Verwijderd schreef op vrijdag 30 juni 2006 @ 14:51:
Kun je niet met javascript de grootte van een bestand uitlezen?
Javascript heeft geen rechten om met je files te rommelen.

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

ik zit even te denken,

In de header van een request staat het aantal bits dat verzonden wordt, ook als er een post gestuurd wordt. Als je een bestand in een iframe post (mbv PHP) en dan vervolgens met AJAX de header hiervan checkt, kom je qua filesize al een heel eind lijkt mij.

Het probleem van de tmp filename zou je kunnen verhelpen door zelf een functie te schrijven die een tijdelijke filename aanmaakt en ergens opslaat (lijkt me niet al te lastig)

Ik heb er zelf nog niet echt naar gekeken, maar dit was wat me zo te binnen schoot.

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • Gersomvg
  • Registratie: December 2005
  • Laatst online: 16:07
Ik ben zelf ook een script voor bestanden uploaden aan het maken en heb hier wel wat dingen gevonden die ik kan gebruiken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
skabouter schreef op vrijdag 30 juni 2006 @ 17:30:
Het probleem van de tmp filename zou je kunnen verhelpen door zelf een functie te schrijven die een tijdelijke filename aanmaakt en ergens opslaat (lijkt me niet al te lastig)
Mwah daar heb ik ook al over nagedacht maar je kan met PHP die naam niet van te voren vast stellen. Lang naar gezocht maar kon er helemaal niks over vinden :'( !

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

Verwijderd schreef op zondag 02 juli 2006 @ 23:19:
[...]


Mwah daar heb ik ook al over nagedacht maar je kan met PHP die naam niet van te voren vast stellen. Lang naar gezocht maar kon er helemaal niks over vinden :'( !
Gebruik de onderstaande setting (in je php.ini file of met de functie 'ini_set()') om doenloads in een zelf opgegeven dir te plaatsen.
upload_tmp_dir string

The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default.
Vervolgens kun je proberen om deze dir uit te lezen met een script om te bepalen welk bestand er op dat moment wordt geupload en hoeveel bytes er al zijn weggeschreven.

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

skabouter schreef op maandag 03 juli 2006 @ 12:36:
Vervolgens kun je proberen om deze dir uit te lezen met een script om te bepalen welk bestand er op dat moment wordt geupload en hoeveel bytes er al zijn weggeschreven.
hoe wil je bepalen welke file bij die upload hoort? zeker als er een paar users gelijktijdig aan het uploaden zijn?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

skabouter: die directive is niet runtime te setten of aan te passen. Op zich is het wel een idee om voor elke PHP-instance een unieke tmpdir in te stellen, maar dat zal je dan in de environment van de PHP-user moeten regelen.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

Erkens schreef op maandag 03 juli 2006 @ 12:40:
[...]

hoe wil je bepalen welke file bij die upload hoort? zeker als er een paar users gelijktijdig aan het uploaden zijn?
Je zou voor elke request een nieuwe dir aan kunnen maken en de dirnaam in een sessie kunnen opslaan.
Bijvoorbeeld:

/uploads/20060704114201
/uploads/20060704114203
/uploads/20060704114204
/uploads/20060704114205
crisp schreef op maandag 03 juli 2006 @ 12:53:
skabouter: die directive is niet runtime te setten of aan te passen. Op zich is het wel een idee om voor elke PHP-instance een unieke tmpdir in te stellen, maar dat zal je dan in de environment van de PHP-user moeten regelen.
Hmm inderdaad, hierdoor gaat mijn oplossing van hierboven dus niet op |:(

[ Dislect ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Conclusie: Vantevoren de tmp_name van een upload weten? Kan dus niet.

Uiteindelijk heb ik het opgelost met de uber-uploader; http://sourceforge.net/projects/uber-uploader . Gelukkig heb ik vroeger nog wat met Perl gedaan zodat ik hiermee wat kon kutten :) . Bedankt voor alle reacties _/-\o_ !
Pagina: 1