Я пытаюсь получить PDF из того, что хранится в базе данных, однако, он возвращает путь, а не сам файл - PullRequest
0 голосов
/ 11 июня 2018

Я чувствую, что это что-то незначительное, что я скучаю, но вот моя проблема.Я загружаю PDF в БД, а затем другой пользователь получает его.

Форма настроена в виде таблицы, в которой содержится информация о пользователе, такая как возраст, средний балл и т. Д., А в конце - ссылка на pdf их резюме.

Однако вместо ссылки web2py возвращает мне путь к месту хранения pdf в файловой системе.

Вот моя таблица:

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, такой:

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

- имя файла, хранящегося в системе.

Как превратить вышеуказанное в интерактивную ссылку, которую можно загрузить вместо пути к файлу в системе?

Я сейчас использую функцию загрузки по умолчанию.

1 Ответ

0 голосов
/ 11 июня 2018

В вашем коде просмотра вы просто отображаете URL, а не создаете ссылку.Вместо:

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

Попробуйте:

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

При использовании SQLFORM или SQLFORM.grid, web2py автоматически генерирует ссылки на загруженные файлы, но при создании представления вручную,Вы несете ответственность за явное создание ссылок и URL-адресов (как вы отметили, база данных хранит только путь файловой системы к хранимому файлу).

...