Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/64: Рейтинг темы: голосов - 64, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 17
1

Создание ссылки для скачивания файла

04.11.2018, 18:02. Показов 12380. Ответов 6

Author24 — интернет-сервис помощи студентам
Всем привет. Делаю небольшое веб-приложение и столкнулся с некоторыми трудностями. Программа преобразует json-файл в таблицу, при помощи pandas. Результат выводится, все ок. Но вот не понимаю как мне к табличке ссылку прикрепить, чтобы ее можно было скачать и открыть в excel. Код прикрепляю:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import pandas as pd
from flask import Flask, render_template, send_file
from flask import request
import io
import xlsxwriter
 
app = Flask(__name__)
data = pd.read_json('text.json')
 
@app.route('/f', methods=['POST'])
def f():
    if request.form['A'].upper() == 'ALL':
        A = [i for i in range(1, 45)]
    else:
        A = list(map(int, request.form['A'].split(',')))   
    b = request.form['dzen']
    if b == '1':
        #result = pd.DataFrame(data[A]).to_excel
        df = pd.DataFrame(data[A])
    #Convert DF
        strIO = io.BytesIO()
        excel_writer = pd.ExcelWriter(strIO, engine="xlsxwriter")
        df.to_excel(excel_writer, sheet_name="sheet1")
        excel_writer.save()
        excel_data = strIO.getvalue()
        strIO.seek(0)
        return data[A].to_html() +  """
                                                <!DOCTYPE html>
                                                <html>
                                                 <head>
                                                 <meta charset="utf-8">
                                                      <title>download</title>
                                                        </head>
                                                         <body>
                                                          <p><a href="strIO" download>Скачать файл</a>
                                                           </body>
                                                    </html>
                                                    """
    elif b == '2':
        pass
    else:
        pass
 
 
@app.route('/')
def f0():
    return render_template('index.html')
 
if __name__ == '__main__':
    app.run(debug=True)
С моим кодом файл скачивается, но он пустой. Подскажите пожалуйста, где я накосячил. Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2018, 18:02
Ответы с готовыми решениями:

Загрузка файла с выводом ссылки для скачивания
Допустим есть простейшая форма и скрипт загрузки файла: &lt;html&gt; &lt;form action=&quot;$_SERVER&quot;...

PhpWord: создание ссылки для сохранения-скачивания шаблона. Видимо проблема с заголовками или путями
Получается сохранять измененный шаблон документа автоматически, задавая ему пути и имя через...

Создание кнопки для скачивания файла с сайта
Доброго времени суток уважаемые форумчане, подскажите пожалуйста- можно ли использовать тег &lt;area&gt;...

Счётчик скачивания файла не меняя вид исходной ссылки
Здравствуйте. На сайте лежит exe файл который скачивает пользователь, путь к файлу такой:...

6
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
04.11.2018, 18:05 2
Цитата Сообщение от LordVader Посмотреть сообщение
<p><a href="strIO" download>Скачать файл</a>
Тут ссылка на файл должна быть
0
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 17
04.11.2018, 18:14  [ТС] 3
Цитата Сообщение от ТабуретY Посмотреть сообщение
Тут ссылка на файл должна быть
Файл формируется внутри функции. Я не совсем понимаю, какую ссылку нужно сюда вписать.
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
04.11.2018, 18:57 4
Файл нигде не формируется, в функции используется стрим, файл надо сохранить и передать

https://stackoverflow.com/ques... s-in-flask
0
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 17
04.11.2018, 19:54  [ТС] 5
Цитата Сообщение от ТабуретY Посмотреть сообщение
Файл нигде не формируется, в функции используется стрим, файл надо сохранить и передать
Теперь файл сохраняется в текущую директорию, но при нажатии на "скачать файл" все равно скачивается пустой excel файл.
Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
app = Flask(__name__, static_url_path='')
data = pd.read_json('text.json')
 
@app.route('/f', methods=['POST'])
def f():
    if request.form['A'].upper() == 'ALL':
        A = [i for i in range(1, 45)]
    else:
        A = list(map(int, request.form['A'].split(',')))   
    b = request.form['dzen']
    if b == '1':
        df = pd.DataFrame(data[A])
        excel_writer = pd.ExcelWriter('output.xlsx')
        df.to_excel(excel_writer, sheet_name="sheet1")
        excel_writer.save()
        return data[A].to_html() +  """
                                                <!DOCTYPE html>
                                                <html>
                                                 <head>
                                                 <meta charset="utf-8">
                                                      <title>download</title>
                                                        </head>
                                                         <body>
                                                          <p><a href='\\output.xlsx' download>Скачать файл</a>
                                                           </body>
                                                    </html>
                                                    """
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
04.11.2018, 20:34 6
Лучший ответ Сообщение было отмечено LordVader как решение

Решение

Пример

Python
1
2
3
4
5
6
7
8
9
10
11
from flask import Flask, jsonify, Response, send_file
 
app = Flask(__name__, static_url_path='')
 
@app.route("/")
def hello():
    return "Hello World! <br> <a href=/getfile/output.xlsx>Файл</a>"
 
@app.route('/getfile/<name>')
def get_output_file(name):
    return send_file(name, as_attachment=True)
1
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 17
04.11.2018, 20:39  [ТС] 7
Цитата Сообщение от ТабуретY Посмотреть сообщение
Пример
Большое спасибо! Работает!
0
04.11.2018, 20:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2018, 20:39
Помогаю со студенческими работами здесь

Как создать ссылки для скачивания
Как создать ссылки для скачивания и можно было бы скачивать

Как создать ссылки для скачивания с компа
Как создать ссылки для скачивания с компа при нажатии появлялось окно выбора куда сохранить файл

Создание счетчика скачивания файла
Всем добрый день ! ) Стоит задача написания счетчика скачивания файла при нажатии на его ссылку и...

Ссылки для скачивания с помощью WebClient.DownloadFile и WebClient.DownloadFileAsync
Ссылки какие должны быть, для скачивания webClient.DownloadFile и webClient.DownloadFileAsync Не...

JBoss: динамическое создание на сервере файлов для скачивания
Доброго времени суток всем! Простой вопрос, просветите плиз: Возникла необходимость динамически...

RewriteRule для скачивания файла
Помогите составить правило для скачивания файл PDF PHP скрипт генерирует pdf файлы, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru