PHP

2008-12-19 3 views
11

का उपयोग कर बाइनरी के रूप में डिस्क पर बेस 64 स्ट्रिंग को सहेजना स्वयं के लिए "कवर के नीचे देखें" ट्यूटोरियल के रूप में मैं एक पीओपी 3 मेलबॉक्स से ईमेल इकट्ठा करने के लिए एक PHP स्क्रिप्ट बना रहा हूं। द्विआधारी अनुलग्नकों का उपयोग करने का प्रयास करते समय मैं यह पता लगाने की कोशिश कर रहा हूं कि अनुलग्नक जानकारी के साथ क्या करना है।PHP

एक स्ट्रिंग है जिसमें ईमेल से इकट्ठा किया जाएगा देखते हुए:

------ = _ Part_16735_17392833.1229653992102 सामग्री प्रकार: image/jpeg; नाम = trans2.jpg सामग्री-स्थानांतरण-एन्कोडिंग: बेस 64 एक्स-अटैचमेंट-आईडी: f_fow87t5j0 सामग्री-विस्थापन: लगाव; फ़ाइल नाम = trans2.jpg

/9j/4AAQSkZJRgABAgEASABIAAD/4QxrRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodp

(...)

EAgEAgEAgEAgEAg8IBQRL/LBE/tJrScHqZ2lkmE4XUP2XcSDZZ2VvZ28dtbsDIYmhkbRxAIJCAQC AQCAQf/ScyAQCAQCAQCAQCAQCAQCAQCAQCAQCAQf/9K = ------ = _Part_16735_17392833.1229653992102--

क्या कोई है डिस्क को डेटा को सहेजने का तरीका ताकि यह एक उपयोगी प्रारूप में होगा?

उत्तर

0

पहली और आखिरी पंक्ति, बेस 64decode बंद करें और दिए गए फ़ाइल नाम के अंतर्गत सहेजें।

किया गया।

0

साथ एक फ़ाइल में लिखने जबकि पहिया पुनर्रचना कुछ मनोरंजन और शैक्षिक महत्व है मैं प्रलोभन का विरोध करने की कोशिश करेगा,:, Mail_mimeDecode

Mailparse
8

आप काफी मात्रा में डेटा को लिखने के लिए लिख रहा धारा फ़िल्टर का उपयोग कर के रूप में आप इसे लिखते तो डेटा को डिकोड सुझाव है कि इससे पहले कि डीकोड किया जा करने की जरूरत है कि ... है, तो

$fh = fopen('where_you_are_writing', 'wb'); 
stream_filter_append($fh, 'convert.base64-decode'); 

// Do a lot of writing here. It will be automatically decoded from base64. 

fclose($h); 
+0

सहेजें डी मेरा दिन, धन्यवाद – Itako

0

मेरे पास एक समान स्थिति थी, और यही वह है जो मैंने किया था। जैसा कि पहले उल्लेख किया गया है, बेस 64 स्ट्रिंग से पहले और बाद में बाहरी लाइनों को हटाना सुनिश्चित करें।

<?php 
$INPUT = "inputfile_base64_encoded.txt"; 
$OUTPUT = "output_decoded.zip"; 
$contents = file_get_contents($INPUT); 
$bin = base64_decode($contents); 
file_put_contents($OUTPUT, $bin); 
?> 
2

मैंने नीचे की कोशिश की लेकिन मेरे लिए काम नहीं किया, एक खाली छवि फ़ाइल उत्पन्न कर रहा था।

file_put_contents('img.png', base64_decode($base64string)); 
इस

है कि यह कैसे मेरे लिए काम किया:

$data = 'data:image/png;base64,AAAFBfj42Pj4'; 

list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
$data = base64_decode($data); 

file_put_contents('/tmp/image.png', $data); 

मैं से कोड लिया: एक डीबी आप लोड का उपयोग जरूरत से बड़ा बेस 64 तार के लिए How to save a PNG image server-side, from a base64 data string

+1

बस 'सूची ($ प्रकार, $ डेटा) = विस्फोट ('; ', $ डेटा); सूची (, $ डेटा) = विस्फोट (',', $ डेटा); 'मेरा कोड तय करें। बहुत धन्यवाद! –

0
function base64_decode_file($data) 
{ 
    if(preg_match('/^data\:([a-zA-Z]+\/[a-zA-Z]+);base64\,([a-zA-Z0-9\+\/]+\=*)$/', $data, $matches)) { 
     return [ 
       'mime' => $matches[1], 
       'data' => base64_decode($matches[2]), 
     ]; 
    } 
    return false; 
} 
0

()

$imgdata = $FromDB['BASE64']->load(); 
$imgdata = base64_decode($imgdata); 
file_put_contents($fileName, $imgdata); 
संबंधित मुद्दे

 संबंधित मुद्दे