Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP Symfony单击文件路径下载文件?_Php_Symfony1_Upload_Symfony 1.4 - Fatal编程技术网

如何使用PHP Symfony单击文件路径下载文件?

如何使用PHP Symfony单击文件路径下载文件?,php,symfony1,upload,symfony-1.4,Php,Symfony1,Upload,Symfony 1.4,我正在用symfony创建一个博客网站。用户可以将他们的帖子上传到该网站。当用户添加文件时,它将保存在web/upload/file\u upload中,文件路径将保存在add\u post表中。当管理员查看add_post表模板时,他可以看到每个用户下载文件的路径,我想做的是通过这个文件路径下载文件 我该怎么做 编辑1: 模型-博客用户模块-帖子 表结构-表名称-博客用户 1 user_id bigint(20) 2 gender varchar(255

我正在用symfony创建一个博客网站。用户可以将他们的帖子上传到该网站。当用户添加文件时,它将保存在web/upload/file\u upload中,文件路径将保存在add\u post表中。当管理员查看add_post表模板时,他可以看到每个用户下载文件的路径,我想做的是通过这个文件路径下载文件

我该怎么做

编辑1:

模型-博客用户模块-帖子

表结构-表名称-博客用户

 1  user_id      bigint(20)      
 2 gender       varchar(255)             
 3  blog_status  tinyint(1)      
 4 file         varchar(255) 
形式

在这里,上传文件时,文件路径保存在Blog_用户表中,文件保存在web/upload目录中

编辑2:

//保存文件方法

public function saveFile(){
    $file = $this->getValue('file');
    if(isset($file)){
        $filename = 'POST_Uploaded -' .($file->getOriginalName());
        $file->save(sfConfig::get('sf_upload_dir').'/post_upload'.'/'.$filename);
    }
}

E:\xampp\htdocs\trunk\web\uploads\post\u upload\post\u uploads-JS.pdf

这说明了它是如何保存在side web/upload/post_upload目录中的,同样的路径也将保存在db中

编辑3:

当用户上传博客时,它将保存在blog_用户表中,并将blog_id作为主键,用户id位于用户表中。我想做的是,当用户上传文件时,用户id和博客id都应该保存在blog表中。怎么做

用户表-用户id,文件上载文件

blog table-blog_id-有blog标题,每个标题都有一个唯一的blog id,因此用户可以在每个标题下上载一个文件


post table-post_id、blog_id、user_id

您可以在任何控制器中写入此文件,并在用户单击下载时调用该函数

function download(){
    $file = "path/to/the/file.zip";
    if (file_exists($file)) {
      exit;
    }
   header('content-type:');
   header('Content-Description: File Transfer');
   //header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename='.basename($file));
   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($file));
   ob_clean();
   flush();
   readfile($file);
   exit;
}
假设:

您的模块名是moduleName 包含该文件的模型是BlogUser 模型的主键是id 我将走这条路:

在模板中:

<a href="<?php echo url_for('post/download?user_id='.$blog_user->getUserId()) ?>">Download file</a>

好的,在我的listAllPost模板上,我显示了我传递给每个用户id的参数的所有帖子,并使用addPost模板显示了与用户有关的所有详细信息,如用户id、用户类型、帖子标题和帖子。在post下面,它显示用户上载的特定文件的文件路径。那么,我是否可以将该路径作为链接并下载该文件?您可以这样调用yourdomain.com/controller/download/filename并将函数更改为function download$arguments这里是我迄今为止所做的-我创建了一个指向该文件路径的链接,像这样

并且它输出-/home/dev/myBlog/trunk/web/uploads/post\u upload/post\u title.pdf这是我的控制器公共函数执行$request{$this->jobseker=Doctrine\u Core::getTable'jobseker'->findarray$request->getParameter'user\u id';}根据这一点,可以使用您之前遇到的方法吗?例如,我在控制器文件中编写此函数,然后我像这样调用此函数,我将在下载方法中更改文件路径和名称您是否使用管理员视图的管理员生成器?顺便说一句,symfony 1.4或2.0?不,我没有使用管理生成器。。我正在使用symfony 1.4.16您没有该表的id吗?blog_用户表的主键是什么?您能给我们看一下数据库中的文件和示例吗?E:\xampp\htdocs\trunk\web\uploads/post_upload/post_uploads-JS.pdf这是它如何保存在数据库中的。它给我一个错误404请求的URL/在这台服务器上找不到frontend_dev.php/application/download/user_id//home/MyBlog/trunk/web/uploads/post_upload/post.pdf。请提供更多信息。更新您的问题:模型名称、模块名称、表结构和一个内容。我将更新我的答案。Model-Blog\u user=Application Module-post------表结构-表名-Blog\u user\u id bigint20性别变量255 Blog\u状态tinyint1文件varchar255@farah最好编辑你的答案,把这些信息放进去,它将更容易阅读。表单-'user_id'=>new sfwidgetforminputteden,'gender'=>new sfWidgetFormInputText,'file'=>new sfWidgetFormInputFile,
<a href="<?php echo url_for('post/download?user_id='.$blog_user->getUserId()) ?>">Download file</a>
  public function executeDownload(sfwebRequest $request)
  {
    $blog_user = Doctrine_Core::getTable('Blog_user')->find($request->getParameter('user_id'));
    $this->forward404Unless($blog_user);

    header('content-type:');
    header('Content-Description: File Transfer');
    //header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($blog_user->getFile()));
    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->getFile()));
    ob_clean();
    flush();

    readfile($blog_user->getFile());

    return sfView::NONE;
  }