我正在尝试从存储在数据库中的 pdf 中检索,但是它 returns 路径而不是文件本身

I am trying to retrieve a pdf from that is stored in the database however, it returns the path not the file itself

我觉得这是我遗漏的小问题,但这是我的问题。我正在将 pdf 上传到数据库,然后让另一个用户检索它。

表单设置在 table 中,其中 table 包含用户的信息,例如年龄、GPA 等,最后是 link 到他们的 pdf恢复。

但是,web2py returns 我不是 link,而是 pdf 在文件系统中的存储路径。

这是我的 table:

db.define_table('user_info',
                Field('first_name', default=get_first_name()),
                Field('last_name', default=get_last_name()),
                Field('phone', 'double'),
                Field('date_of_birth', dmy=['d', 'm', 'y']),
                Field('address'),
                Field('city'),
                Field('zip'),
                Field('gpa','double'),
                Field('income','double'),  
                Field('pdf','upload')

这是html:

<table>
      {{for user_i in user_info:}}
    <tr>
      <td>{{=user_i.first_name}}</td>
      <td>{{=user_i.last_name}}</td>
      <td>{{=user_i.gpa}}</td>
      <td>{{=user_i.income}}</td>
      <td>{{=user_i.family_members}}</td>
      <td>{{=URL('default', 'download', args=user_i.pdf)}}</td>
    </tr>
    {{pass}}
</table>

在我的控制器中,我返回这个:

def see_users():
    user_info = db().select(db.user_info.ALL)
    return dict(user_info=user_info)

我从 pdf 列中的 table 获得的输出是这样的:

/ScholarshipWebsite/default/download/user_info.pdf.aafb1b2cb4664e28.4772616469616e6365204f6e6c696e6520416363656c6572

这是系统中存储的文件名。

如何将上面的变成可点击的link可以下载而不是文件在系统中的路径?

我现在使用的是默认下载功能。

在您的视图代码中,您只是显示 URL 而不是创建 link。而不是:

<td>{{=URL('default', 'download', args=user_i.pdf)}}</td>

尝试:

<td><a href="{{=URL('default', 'download', args=user_i.pdf)}}">PDF</a></td>

当使用SQLFORMSQLFORM.grid时,web2py自动生成links给上传的文件,但是当你手动构建视图时,你负责显式创建links 和 URLs(如您所述,数据库仅存储存储文件的文件系统路径)。