Merhaba arkadaşlar,
Üzerinde çalıştığım efatura entegrasyonunda fatura dosyası bana gönderilirken zip dosyası içerisinde "ubl-pdf-html" formatlarından hangisini seçtiysem o formatta olacak biçimde gönderiliyor.
Tabi bu .zip dosyası dosya olarak gönderilemeyeceği için .zip dosyası base64 binarydata olarak gönderiliyor.
Bu base64 verisini benim tekrar .zip dosyası olarak decode etmem ve sunucuma kaydetmem gerek.
Yardımcı olabilecek arkadaşlar buradan kaynak yada bilgilerini aktarabilirlerse çok sevinirim.
Skype:live: yektadogru_1 adresinden de ulaşabilirsiniz.
Base64 veriyi .Zip olarak kaydetmek
4
●128
- 28-05-2020, 13:40:08$filename_path = md5(time().uniqid()).".jpg";$base64_string = str_replace('data:image/png;base64,', '', $base64_string);$base64_string = str_replace(' ', '+', $base64_string);$decoded = base64_decode($base64_string);file_put_contents("u ploads/".$filename_path,$decoded);Bu kod işinize yarayacaktıryktdgr adlı üyeden alıntı: mesajı görüntüle
- 28-05-2020, 14:16:04Hocam malesef dosya yolunu ve adını da değiştirip kontrol ettim, zip dosyasının base64 verisindede bir sorun görünmüyor fakat dosya oluşmadı
ahmethekim14 adlı üyeden alıntı: mesajı görüntüle - 29-05-2020, 02:57:49Merhaba,yktdgr adlı üyeden alıntı: mesajı görüntüle
Dosyayı bilmediğim için tam emin olamadım ama tarifinizden doğru anladıysam ;
$efaturabase64 = "/blabla"; // size gelen base64 $file = tempnam("tmp", "zip"); $zip = new ZipArchive(); $zip->open($file, ZipArchive::OVERWRITE); $zip->addFromString('efatura.formati', base64_decode($efaturabase64)); $zip->close();burada $file application/zip olduğu için header disposition vs. kullanarak download ettirebilirsiniz. tempnam dosya oluşturması için yetki vermeniz gerekebilir /tmp içinde oluşturuyor mu emin değilim.
Yanılıyorsam da komple zip içeriği size base64 geliyor olabilir onda da base64_decode edip içeriği direk olarak a.zip'e fwrite yapabilirsiniz.
Kolaylıklar.
edit: kodları alt alta alma vs. - 31-05-2020, 16:05:54Base64binarydata(zip dosyası içerisinde xml dosyası) içinde xml dosyyası bulunan zip dosyasının base64 datasını belirtilen yola zip dosyası olarak kaydetmek için;
$sourcePath=WWW_ROOT . "/files/".$filename.".zip"; file_put_contents($sourcePath, base64_decode($base64_string));
Bir xml stringini .zip dosyası içerisinde .xml dosyasına kaydetmek için
$zip = new ZipArchive(); $filename = WWW_ROOT . "/files/test.zip"; if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) { } else{ $zip->addFromString("testfile.xml",$xml_string); $zip->close(); }Kodları kullanılmıştır, hepinize teşekkür ederim umarım bu konuda takılanlara yardımı dokunur