Sziasztok!
A következő problémával szívok már egy ideje, hátha van valakinek megoldása.
Adott egy attachment nevű táblám:
tms_attachment:
id: ~
filename: { type: varchar(255), required: true}
data: { type: blob}
size: { type: integer, required: true}
mime: { type: varchar(255), required: true}
uploaded_at: { type: timestamp, required: false}
Ebbe akarok file-okat feltölteni, illetve innen letölteni. A fájl feltöltés gyönyörűen működik,
mysql query browser-rel látom a feltöltött adatokat. A problémám a file letöltéssel van, valamiért
nem működik.
A következővel próbálkoztam:
public function executeShow(sfWebRequest $request)
{
$this->tms_attachment = TmsAttachmentPeer::retrieveByPk($request->getParameter('id'));
$this->forward404Unless($this->tms_attachment);
$this->getResponse()->clearHttpHeaders();
$this->getResponse()->addHttpMeta('content-type', $this->tms_attachment->getMime());
$this->getResponse()->addHttpMeta('content-length', $this->tms_attachment->getSize());
$this->getResponse()->setContent($this->tms_attachment->getData()->dump());
return sfView::NONE;
}
A setContent-nél hogyha a getMime()-ot pakolom bele, oké. Ha a getSize()-ot, akkor is. Ha a getData()-val próbálkozok, akkor viszont a következőt adja vissza "Resource id #118"
Hogy tudok ebből a resource-ből valamiféle normális adatstream-et kinyerni?
- 944 megtekintés
Hozzászólások
A megoldás:
$this->tms_attachment = TmsAttachmentPeer::retrieveByPk($request->getParameter('id'));
$this->forward404Unless($this->tms_attachment);
$this->getResponse()->clearHttpHeaders();
$this->getResponse()->setHttpHeader('Pragma', '');
$this->getResponse()->setHttpHeader('Cache-Control', '');
$this->getResponse()->setHttpHeader('Content-Type', 'application/pdf');
$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="'.$this->tms_attachment->getFilename().'"');
$this->getResponse()->addHttpMeta('content-type', $this->tms_attachment->getMime());
$this->getResponse()->addHttpMeta('content-length', $this->tms_attachment->getSize());
$this->getResponse()->setContent(stream_get_contents($this->tms_attachment->getData()));
return sfView::NONE;
szerkesztve
- A hozzászóláshoz be kell jelentkezni