2016-09-08 8 views
0

Ich habe ein Skript, das den Inhalt einer Datei erhält und codiert mit base64. Dieses Skript funktioniert gut:PHP Decode base64 Datei Inhalt

<?php 
$targetPath="D:/timekeeping/logs/94-20160908.dat"; 
$data = base64_encode(file_get_contents($targetPath)); 
$file = fopen($targetPath, 'w'); 
fwrite($file, $data); 
fclose($file); 
echo "file contents has been encoded"; 
?> 

Jetzt möchte ich den Inhalt wieder auf seinen ursprünglichen Wert dekodieren. Ich habe versucht:

<?php 
$targetPath="D:/timekeeping/logs/94-20160908.dat"; 
$data = base64_decode(file_get_contents($targetPath)); 
$file = fopen($targetPath, 'w'); 
fwrite($file, $data); 
fclose($file); 
echo "file contents has been decoded"; 
?> 

Aber funktioniert nicht.

+0

wurde beide auf der gleichen Seite geschrieben? – Noman

+0

Was funktioniert nicht? Zeigen Sie uns Beispieleingabe und -ausgabe und erklären Sie die Unterschiede zwischen dem, was Sie tatsächlich bekommen haben und dem, was Sie erwartet haben. –

+0

Nein, sie sind nicht auf demselben Skript. – Joey

Antwort

0

Sie bieten nicht die Details „nicht funktionieren“ Ich gehe davon aus Sie doppelt kodieren oder Doppel dekodieren becouse des Eingangs & Ausgang sind die gleiche Datei, betrachten

<?php 

$in = 'teszt'; 
$enc = base64_encode($in); 
echo $enc,"\n"; 
$enc2 = base64_encode($enc); 
echo $enc2,"\n"; 
$enc3 = base64_encode($enc2); 
echo $enc3,"\n"; 

zu sehen, was doppelt kodieren geschieht

versuchen diese

<?php 
$sourcePath="D:/timekeeping/logs/94-20160908.dec.dat"; 
$targetPath="D:/timekeeping/logs/94-20160908.enc.dat"; 
if (!file_exsits($sourcePath) || !file_readable($sourcePath)) { 
    die('missing source'); 
} 
$source = file_get_contents($sourcePath); 
if (empty($source)) { 
    die('source file is empty'); 
} 
$data = base64_encode($source); 
$file = fopen($targetPath, 'w'); 
fwrite($file, $data); 
fclose($file); 
echo "file contents has been encoded"; 
?> 

<?php 
$sourcePath="D:/timekeeping/logs/94-20160908.enc.dat"; 
$targetPath="D:/timekeeping/logs/94-20160908.dec.dat"; 
if (!file_exsits($sourcePath) || !file_readable($sourcePath)) { 
    die('missing source'); 
} 
$source = file_get_contents($sourcePath); 
if (empty($source)) { 
    die('source file is empty'); 
} 
$data = base64_decode($source); 
$file = fopen($targetPath, 'w'); 
fwrite($file, $data); 
fclose($file); 
echo "file contents has been decoded"; 
?> 
+0

mein zweites Skript funktioniert nicht. auf dem Decodierungsteil. es gibt 0kb der Datei zurück – Joey

+0

'" D: /timekeeping/logs/94-20160908.enc.dat "' existiert, wenn es aufgerufen wird? , ich füge Kontrollen hinzu, um – cske

0

Das ist mein Problem behoben. Die zwei Funktionen sind nicht gut zusammen, so dass ich die file_get_contents von base64_decode

<?php 
    $targetPath="D:/timekeeping/logs/94-20160908.dat"; 
    $data = file_get_contents($targetPath); 
    $content= base64_decode($data); 
    $file = fopen($targetPath, 'w');  
    fwrite($file, $content); 
    fclose($file); 
    echo "done"; 
?> 
+0

zu antworten, wenn man arbeitet, das andere wird auch dieses coud nicht das Problem sein – cske