Ciao a tutti, provo ad esporvi il mio problema
Utilizzo Yii2, IIS6 PHP P5.4 su Server Windows
Per problemi di compatibilità Windows Server 2003 devo utilizzare dei drive PDO SQL per Sql Server non ufficiali ma che sembrano comunque funzionare senza problemi.
Ho un database sql server 2005 con una tabella che contiene alcuni file PDF salvati direttamente come file binari in un campo di tipo image
Per visualizzare il file nel controller ho creato questa azione
public function actionDisplay($id)
{
$model=$this->findModel($id);
$response = Yii::$app->getResponse();
$response->format = Response::FORMAT_RAW;
$response->sendContentAsFile($model->allegato,$model->nome_allegato,['mimeType'=>$model->tipo_allegato,'inline'=>false]);
return $response->send();
}
Richiamando l’azione viene scaricato un file PDF con il nome corretto ma purtroppo il file risulta vuoto
L’unico modo in cui riesco a recuperare il file correttamente è con uno script in PHP senza utilizzare Yii utilizzando PDO::PARAM_LOB e PDO::SQLSRV_ENCODING_BINARY
$conn = new PDO($dsn, $username, $password);
$sql = "SELECT allegato FROM allegati WHERE ID_allegato = 12";
$stmt = $conn->prepare($sql);
$stmt->execute();
$stmt->bindColumn(1,
$file,
PDO::PARAM_LOB,
0,
PDO::SQLSRV_ENCODING_BINARY);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-type:application/pdf");
echo $file;
In questo modo il file viene recuperato correttamente.
Credo di aver capito che il problema sia nel modo in cui il file binario viene recuperato ma non ho proprio capito come posso utilizzare una query di questo tipo all’interno di Yii
Qualcuno mi può dare un consiglio?
Grazie in anticipo