2017-07-07 82 views
1

我想知道是否有可能通過在表單中​​輸入url來使用ajax將圖像上傳到flask.server文件服務器中。這是我目前的形式設置:上傳圖像文件到服務器給定的URL

<form method=post enctype=multipart/form-data runat="server" id="capture_form"> 
<div class="form-group"> 
     <label for=facesURL>URL:</label> 
     <input type="text" name="image_url" class="form-control" id=facesURL placeholder="URL of image"> 
     <input type="submit" value="Preview URL image" id="submit"> 
</div> 
<button align="center" class="btn btn-info upload-image" id=upload-image type=submit value="Upload Image">Upload File</button> 

目前,預覽URL圖像按鈕從網址到顯示圖像,但我被困在實際上抓住那個src和上傳的上傳點擊圖像按鈕。任何幫助表示讚賞。

回答

0

如果用戶指定一個URL,讓服務器從指定的URL本身(在後端)下載圖像可能更有意義,而不是試圖讓網頁下載並直接發送圖像。

這裏有一個粗略的(未經測試)取景功能,顯示你的代碼,最終可能看起來像:

@app.route('/submit_image', methods=['GET', 'POST']) 
def submit_image(): 
    # I'm assuming you're using the Flask-WTF module for your forms 
    form = SubmitImageForm() 
    if request.method == 'GET': 
     return render_template('submit_image.html', form=form) 
    elif request.method == 'POST': 
     if form.validate_on_submit(): 
      path_to_save_image_to = '' # Fill this in 

      with open(path_to_save_image_to,'wb') as f: 
       f.write(urllib.request.urlopen(form.image_url.data, path_to_save_to).read()) 

      return redirect(url_for('submission_successful')) 
     else: 
      return render_template('submit_image.html', form=form, error="Invalid submission") 

的幫助來自:Downloading a picture via urllib and python

+0

我不能完全肯定Flask_WTF模塊是什麼,我現在只是通過html發送文件。那麼如果使用這個SubmitImageForm函數,form.image_url.data將包含request.files ['file']的等價物嗎? –

+0

'SubmitImageForm'實際上是一個用戶定義的類,而不是一個函數。使用flask_wtf時可以創建這樣的類。 [我相信](https://stackoverflow.com/a/16664376/4115031)當不使用flask_wtf時,相當於'form.image_url.data'會是'request.form ['image_url']',假設你命名爲字段'image_url'。 –