2016-05-08 13 views
0

Ich speicherte ein png Bild in BLOB Feld in der Datenbank.Yii2. Datei aus dem Datenbank-BLOB-Feld herunterladen

$model->content = \yii\web\UploadedFile::getInstanceByName($fileName); 
$model->save(); 

Wie kann ich es jetzt herunterladen? Ich habe versucht:

$model=$this->findModel($id); 
header('Content-length: 362654'); 
header('Content-Type: png'); 
header('Content-Disposition: attachment; filename='.$model->name_); 
echo $model->content; 

Aber danach die Datei heruntergeladen wurde, aber mit der Größe 1 kb statt 362654. Und nichts innen Datei.

Antwort

0

Ich habe eine Lösung gefunden. Mit nur einem: nicht

$model->content = \yii\web\UploadedFile::getInstanceByName($fileName); 

es nicht möglich ist, zu speichern Inhalt der Datei als getInstanceByName es nicht zurück. Um Inhalte zu erhalten und es in dbBLOB Feld zu speichern habe ich folgenden Code:

$file = \yii\web\UploadedFile::getInstanceByName($fileName); 
$fp = fopen($file->tempName, 'r'); 
$content = fread($fp, $file->size); 
fclose($fp); 
$model->content = $content; 
$model->save(); 

So war das Problem falsch Speichern der Datei.