如何在symfony1.4中下载上载的文件

如何在symfony1.4中下载上载的文件,symfony1,symfony-1.4,Symfony1,Symfony 1.4,我正在使用sfWidgetFormInputFile()将图像上载到文件夹myu PROJECT/WEB/UPLOADS。如何从该路径下载这些文件。如何获取上载文件夹的路径。当我上传一个文件时,文件名也会变成这样的1f3c6d9bf7b8ebda8b600576c55817c34715a8421。我如何上传它的原始名称?提前谢谢 您需要获取原始文件名,如下所示: $filename = $this->form->getValue('file')->getOriginalN

我正在使用sfWidgetFormInputFile()将图像上载到文件夹
myu PROJECT/WEB/UPLOADS
。如何从该路径下载这些文件。如何获取上载文件夹的路径。当我上传一个文件时,文件名也会变成这样的
1f3c6d9bf7b8ebda8b600576c55817c34715a8421
。我如何上传它的原始名称?提前谢谢

您需要获取原始文件名,如下所示:

   $filename = $this->form->getValue('file')->getOriginalName();
   $this->exists = file_exists(sfConfig::get('sf_web_dir').$filename);

   if (!$this->exists)
     $this->form->getValue('file')->save(sfConfig::get('sf_web_dir').$filename);

您需要获取原始文件名,如下所示:

   $filename = $this->form->getValue('file')->getOriginalName();
   $this->exists = file_exists(sfConfig::get('sf_web_dir').$filename);

   if (!$this->exists)
     $this->form->getValue('file')->save(sfConfig::get('sf_web_dir').$filename);

有一个更简单的方法。。。将
generateFieldNameFilename()
函数放入模型或表单类中(其中
FieldName
是存储图像的字段的camellized名称)


顺便说一句,symfony重命名您上传的文件,因为文件名在目录中必须是唯一的,所以如果您想保留原始名称,存储文件名的字段应该是唯一的,并且每个型号的文件都应该有一个单独的子目录。

有一个更简单的方法。。。将
generateFieldNameFilename()
函数放入模型或表单类中(其中
FieldName
是存储图像的字段的camellized名称)

public function executeDownload(sfwebRequest $request)
{
    $blog_user = Doctrine_Core::getTable('login')->find($request->getParameter('id'));
    //$this->forward404Unless($res);
    //$file=$blog_user->getDoc();
    //$path=sfConfig::get('sf_upload_dir').'/'.$file;
    header('content-type:image/jpg');
    header('Content-Description: File Transfer');
    //header('Content-Type: application/octet-stream');
    header('Accept-Ranges: bytes');
    header('Content-Disposition: attachment; filename='.basename($blog_user->getDoc()));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($blog_user->getDoc()));
    ob_clean();
    flush();
    readfile($blog_user->getDoc());
    return sfView::NONE;
}

顺便说一下,symfony会重命名您上传的文件,因为文件名在目录中必须是唯一的,因此如果您想保留原始名称,存储文件名的字段应该是唯一的,每个模型的文件都应该有一个单独的子目录。

您使用什么功能将文件保存到文件系统中?您使用什么功能将文件保存到文件系统中?
public function executeDownload(sfwebRequest $request)
{
    $blog_user = Doctrine_Core::getTable('login')->find($request->getParameter('id'));
    //$this->forward404Unless($res);
    //$file=$blog_user->getDoc();
    //$path=sfConfig::get('sf_upload_dir').'/'.$file;
    header('content-type:image/jpg');
    header('Content-Description: File Transfer');
    //header('Content-Type: application/octet-stream');
    header('Accept-Ranges: bytes');
    header('Content-Disposition: attachment; filename='.basename($blog_user->getDoc()));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($blog_user->getDoc()));
    ob_clean();
    flush();
    readfile($blog_user->getDoc());
    return sfView::NONE;
}