upload di un file binario

  • Creatore Discussione Creatore Discussione matt86
  • Data di inizio Data di inizio

matt86

Nuovo Utente
25 Feb 2006
11
0
0
Ciao ragazzi,
sto creando un sistema di api che permette al client di effettuare l'upload dei file all'interno del mio server tramite chiamata api.

Il client deve inviarmi l'immagine in binario in questo modo:

PHP:
function ImgToBinary($pathImg)
{
    $con = file_get_contents($pathImg);
    $en = base64_encode($con);
    return $en;
}

Quindi al server arriverà un'immagine in binario codificata in base64.

Il mio server dovrà decodificarla e salvarla all'interno di una cartella.

Per decodificarla ho scritto:

PHP:
$immagine = base64_decode($mia_immagine_in_binario);

Ma adesso come devo fare l'upload?

spero di esser stato chiaro.

Grazie in anticipo.
 
Ciao alessandro1997,
intanto ti ringrazio per la risposta. Ho provato a fare come hai detto tu e funziona tutto, anche mettendo un'altro nome.
Adesso ho un'altra domanda da farti, se invece volessi manipolarla? Tipo ritagliare l'immagine? Prima la devo salvare e poi riprenderla per manipolarla?
 
Ok perfetto, grazie!
Ultima domandina e poi ti prometto che non ti disturbo più :-)

Come faccio a sapere il mime type da un file binario? C'è un modo?

Disolito con questa funzione riesco ad ottenerlo:

PHP:
function getImgType($filename) 
	{
	    $handle = @fopen($filename, 'r');
	    if (!$handle)
	        throw new Exception('File Open Error');
	
	    $types = array('jpeg' => "\xFF\xD8\xFF", 'gif' => 'GIF', 'png' => "\x89\x50\x4e\x47\x0d\x0a", 'bmp' => 'BM', 'psd' => '8BPS', 'swf' => 'FWS');
	    $bytes = fgets($handle, 8);
	    $found = 'other';
	
	    foreach ($types as $type => $header) {
	        if (strpos($bytes, $header) === 0) {
	            $found = $type;
	            break;
	        }
	    }
	    fclose($handle);
	    return $found;
    }

ma in questo caso essendo un file binario non so proprio come fare.
 
Ultima modifica:
Ho fatto così ma non funziona, perché giustamente mi cerca il percorso:

PHP:
$immagine = base64_decode($binary_data);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $immagine);
finfo_close($finfo);
 
Il mime type lo devo conoscere prima di salvarlo con file_put_contents, in questo modo posso determinare l'estenzione che devo dare all'immagine convertita.
 

Discussioni simili