Как осуществить загрузку pdf / docx файла с загружаемой ссылкой в ​​столбцах DataTable - PullRequest
0 голосов
/ 10 мая 2018

Я хочу загрузить файлы из столбцов DataTable, HTML-код, как показано ниже:

$(document).ready(function() {
        var table = $('#sample').DataTable({
            "serverSide": true,
            "ajax": "/api/sample/?format=datatables",
            "columns": [
                {"data": "hospital_name"},
                {"data": "report_path", "render":function(data,type,row,meta){
                    return '<a href="{% url 'downloads' "'+data+'" %}">Download</a>'

Загрузка всегда не удалась. Возможно, что-то не так с: return 'Download' Как я могу отправить "report_path" функции просмотра загрузок и инициировать загрузку правильно.

downloads in views.py:
def downloads(request, filename):
    file_pathname = filename
    with open(file_pathname, 'rb') as f:
        file = File(f)
        response = HttpResponse(file.chunks(),content_type='APPLICATION/OCTET-STREAM')
        response['Content-Disposition'] = 'attachment; filename=' + filename
        response['Content-Length'] = os.path.getsize(file_pathname)
    return response

urls.py:
urlpatterns = [
    url('^admin/', admin.site.urls),
    url('^api/', include(router.urls)),
    url('$', views.index,name='htdbs'),
    url('htdbs/', include('htdbs.urls')),
    url(r'^downloads/(?P<filename>.*)$', views.downloads, name='downloads')
]

Я поместил загруженный файл в MEDIA_ROOT, seetings.py:

.
# media storage
MEDIA_ROOT = 'D:/uploads/'
MEDIA_URL = '/uploads/'

в файле models.py:

report_path = models.FileField(upload_to=settings.MEDIA_ROOT+'/%Y/%m/%d')

Итак, как мне успешно загрузить загруженный файл pdf / docx?

...