Ik heb een home made archief file gemaakt onder windows. Deze ziet er als volgt uit:
HEADER
Filename (12 chars groot, 8.3)
SIZE (4 byte)
filedata
filename
etc...
Nu heb ik tm de filesize ontcijfert en weet hoeveel data ik moet lezen. Deze data moet in een andere filehandle gezet worden.
De data die in handle2 staat is echter corrupt. (vergeleken met de data in het archief). Met C++ ben ik gewenst dit in een void buffer te drukken maar PHP kent zoiets niet; fread geeft namelijk een string terug. Ik heb overigens PHP 4.1.2-7
Hoe los ik dit op?
HEADER
Filename (12 chars groot, 8.3)
SIZE (4 byte)
filedata
filename
etc...
Nu heb ik tm de filesize ontcijfert en weet hoeveel data ik moet lezen. Deze data moet in een andere filehandle gezet worden.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $handle=fopen("archief.pak","rb"); $teststring=fread($handle,6); if ($teststring=="HABPAK"){ $filename1=fread($handle,12); $name=time()."-".substr(microtime(),2,4).".jpg"; // unieke naam aanmaken // grote bepalen: $int1=ord(fread($handle,1)); $int2=ord(fread($handle,1)); $int3=ord(fread($handle,1)); $int4=ord(fread($handle,1)); $grote=$int4*16777216+$int3*65536+$int2*256+$int1; $gelezen=fread($handle,$grote); $handle2=fopen($name, "w+b"); fwrite($handle2,$gelezen,$grote); fclose($handle2); |
De data die in handle2 staat is echter corrupt. (vergeleken met de data in het archief). Met C++ ben ik gewenst dit in een void buffer te drukken maar PHP kent zoiets niet; fread geeft namelijk een string terug. Ik heb overigens PHP 4.1.2-7
Hoe los ik dit op?
if broken it is, fix it you should