Python Flask: пользователь загружает очищенные изображения

#python #flask #download

#python #flask #Скачать

Вопрос:

У меня есть небольшой скрипт, который является средством очистки изображений. По сути, вы предоставляете скрипту ссылку, и он загружает все изображения с веб-страницы в папку на вашем рабочем столе. Я хотел бы такую же функциональность, но в браузере. Я прошу пользователей ввести ссылку, и скрипт начинает загрузку изображений по ссылке на их компьютер. Мой код приведен ниже:

 @app.route('/')
def main():
   return render_template('index.html')

@app.route('/Downlading', methods=['POST'])
def Downlading():
   url= request.form['url']
   start = request.form['start']
   end = request.form['end']
   dphy = image_downloader(url) #this is the script that saves the images
   return str(dphy)
  

Я могу получить URL пользователя и передать его image_downloader, который загружает изображения. Проблема в том, что изображения загружаются из командной строки. Я хочу, чтобы скрипт запускался внутри браузера, точно так же, как он запускался бы в моей IDE. Извините, если это сбивает с толку.

Мой HTML-код:

     <form action="/Downlading" method="POST" >
        URL: <input type="text" name="url"><br/>
        Start: <input type="text" name="start"><br/>
        End: <input type="text" name="end"><br/>
        <input type="submit" name="form" value="Submit" />

    </form>
  

Комментарии:

1. что происходит, когда вы запускаете код?

2. Если вы введете URL-адрес на веб-сайте, изображения будут загружены по URL-адресу, но загрузка отобразится в командной строке. Разве это не должно загружаться в браузере

3. Вы должны создать HTML-шаблон для его размещения.

4. Я новичок в html и flask. Не могли бы вы, пожалуйста, пояснить, как я могу добавить это в HTML.

5. Конечно, только что добавлен ответ.

Ответ №1:

Вам нужно создать HTML-шаблон для переменной, в которой будет отражаться. Например:

HTML — upload.html:

 <html>
<title>Example on StackOverflow</title>
<p> The str representation of the variable dphy is {{ dphy }} </p>
</html>
  

Python (добавьте это в существующий скрипт flask):

 @app.route('/Downlading', methods=['POST'])
def Downlading():
   url= request.form['url']
   start = request.form['start']
   end = request.form['end']
   dphy = image_downloader(url) #this is the script that saves the images
   return render_template('upload.html', dphy=str(dphy))
  

Это должно сработать, но я не могу протестировать это прямо сейчас, поэтому я не уверен. Это основная идея для передачи переменных через Flask — создайте шаблон, который использует переменную, затем передайте ее явно при рендеринге этого созданного шаблона.