[PHP] Inlezen uploaded file mislukt

Pagina: 1
Acties:

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
Via een form heb ik iets geupload. Deze verschijnt netjes in de temp-dir op de server ook in de goede grootte. Het bestand is bijvoorbeeld 44 KB, maar na het inlezen via fread is de ingelezen data maar 584 bytes (en dat is consequent, dit verschilt dus niet per keer).

Dit is mijn code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
$size = @filesize($input_file);
if (($size > 20) && ($size < 256000)) {
  //size is fine
  $input_data = fread(fopen($input_file, 'r'), $size);
  $this->addHistory('Size', $size);
  $this->addHistory('Length', strlen($input_data));
  return $this->create($input_file_name,$input_file_type,$size,$input_data,$description);
} else {
  //too big or small
  $this->setError('File: File must be > 20 bytes and < 256000 bytes in length');
  return false;
}

in dit geval is $size gewoon 44 KB, maar de lengte van $input_data is maar 584 bytes. Iemand enig idee wat er fout kan gaan?

Signature van nature


  • Grum
  • Registratie: Juni 2001
  • Niet online
fread(fopen($input_file, 'r'), $size);

is NIET ok :)

je kan zo geen fclose meer doen :+

btw wrom heb je een '@' voor filesize ?

is de data in $input_data altijd hetzelfde ?

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
@filesize gebruik ik om te voorkomen dat het script gaat zeuren tijdens het berekenen van de filesize :P

en de data in $input_data is altijd de eerste paar bytes van de file.

ps. ik heb nu ff de boel gesplits zodat ik ook een fclose kan doen. Maar dat maakte geen verschil in uitkomst verder.

Signature van nature


  • Grum
  • Registratie: Juni 2001
  • Niet online
Sircuri: @filesize gebruik ik om te voorkomen dat het script gaat zeuren tijdens het berekenen van de filesize :P


ow .. meestal gebruik je daar file_exists voor ;)

doe het anders es met een fopen;while(!feof()) fgets;fclose; loopje :)

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Topicstarter
oeps.. ik ben heel stom geweest.

from php.net
Note: On systems which differentiate between binary and text files (i.e. Windows) the file must be opened with 'b' included in fopen() mode parameter.
dus... fopen ($fp, 'rb') en NIET fopen ($fp, 'r')

toch bedankt Grum!!

Signature van nature


  • Grum
  • Registratie: Juni 2001
  • Niet online
ga dan ook niet op een windows pc coden :+
Pagina: 1