2017-03-02 40 views
-1

我正在尝试开发一个Web应用程序,我想在其中上传多个CSV文件并将它们传输到MongoDB。我用Python Flask来开发应用程序。如何使用Python Flask将数据从html发送到MongoDB

我已经创建了一个示例文件来测试几个概念,其中我已经实现了直到从本地桌面浏览文件。 但是,我想上传相同的文件并将其传输到MongoDB。

你能帮我实现吗?我无法弄清楚如何实现这一目标。

<!DOCTYPE html> 
<html> 
<head> 
    <title>TheAnveshaSrivastava</title> 
     <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" > 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
     <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 

<style> 

    .tabs-right > .nav-tabs, 
    .tabs-left > .nav-tabs { 
     border-bottom: 0; 
    } 

    .tab-content > .tab-pane, 
    .pill-content > .pill-pane { 
     display: none; 
    } 

    .tab-content > .active, 
    .pill-content > .active { 
     display: block; 
    } 


    .tabs-left > .nav-tabs > li, 
    .tabs-right > .nav-tabs > li { 
     float: none; 
    } 

    .tabs-left > .nav-tabs > li > a, 
    .tabs-right > .nav-tabs > li > a { 
     min-width: 74px; 
     margin-right: 0; 
     margin-bottom: 3px; 
    } 

    .tabs-left > .nav-tabs { 
     float: left; 
     margin-right: 19px; 
     border-right: 1px solid #ddd; 
    } 

    .tabs-left > .nav-tabs > li > a { 
     margin-right: -1px; 
     -webkit-border-radius: 4px 0 0 4px; 
     -moz-border-radius: 4px 0 0 4px; 
       border-radius: 4px 0 0 4px; 
    } 

    .tabs-left > .nav-tabs > li > a:hover, 
    .tabs-left > .nav-tabs > li > a:focus { 
     border-color: #eeeeee #dddddd #eeeeee #eeeeee; 
    } 

    .tabs-left > .nav-tabs .active > a, 
    .tabs-left > .nav-tabs .active > a:hover, 
    .tabs-left > .nav-tabs .active > a:focus { 
     border-color: #ddd transparent #ddd #ddd; 
    } 
</style> 
</head> 
<!-- language: lang-html --> 
<body> 

    <div class="container"> 
     <div class="row"> 
     <div class="col-md-6"><h3>Tabs vertical side</h3> 

      <!-- tabs left --> 
      <div class="tabbable tabs-left"> 
      <ul class="nav nav-tabs"> 
       <li><a href="#a" data-toggle="tab">One</a></li> 
       <li class="active"><a href="#b" data-toggle="tab">Two</a></li> 
       <li><a href="#c" data-toggle="tab">Twee</a></li> 
       <li><a href="#d" data-toggle="tab">Four</a></li> 
      </ul> 
      <div class="tab-content"> 
      <div class="tab-pane active" id="a">Lorem ipsum dolor sit amet, charetra varius quam sit amet vulputate. 
      Quisque mauris augue, molestie tincidunt condimentum vitae, gravida a libero.</div> 
      <div class="tab-pane" id="b">Secondo sed ac orci quis tortor imperdiet venenatis. Duis elementum auctor accumsan. 
      Aliquam in felis sit amet augue.</div> 
      <div class="tab-pane" id="c">Thirdamuno, ipsum dolor sit amet, consectetur adipiscing elit. Duis pharetra varius quam sit amet vulputate. 
      Quisque mauris augue, molestie tincidunt condimentum vitae. </div> 
      <div class="tab-pane" id="d">Four numero 4 damuno, ipsum dolor sit amet, consectetur adipiscing elit. Duis pharetra varius quam sit amet vulputate. 
      Quisque mauris augue, molestie tincidunt condimentum vitae. </div> 
      </div> 
      </div> 
      <!-- /tabs --> 

     </div> 
     </div><!-- /row --> 
    </div> 
    <script> 
    $('.tab-pane').each(function(index) { 
     const label = '<label class="btn btn-default btn-file">Browse</label>'; 
     const input = '<input type="file" >'; 
     //const button = '<button class="btn btn-primary">Upload</button>'; 
     $(this).append("<br /><br />", $(label).append(input)); 
    }); 
</script> 
</body> 

瓶:

from flask import Flask, render_template, url_for, request, session, redirect 
from flask.ext.pymongo import PyMongo 
import bcrypt 

app = Flask(__name__) 

app.config['MONGO_DBNAME'] = 'mongologinexample' 
app.config['MONGO_URI'] = 'mongodb://Anvesha1124:[email protected]:57509/connect_to_mongo1124' 

mongo = PyMongo(app) 



@app.route('/login') 
def header(): 
    """if 'username' in session: 
     return 'You are logged in as ' + session['username']""" 

    return render_template('header.html') 


@app.route('/login', methods=['POST']) 
def login(): 
    users = mongo.db.users 
    login_user = users.find_one({'name' : request.form['username']}) 

    if login_user: 
     if bcrypt.hashpw(request.form['pass'].encode('utf-8'), login_user['password'].encode('utf-8')) == login_user['password'].encode('utf-8'): 
      session['username'] = request.form['username'] 
      return redirect(url_for('header')) 

    return 'Invalid username/password combination' 

@app.route('/register', methods=['POST', 'GET']) 
def register(): 
    if request.method == 'POST': 
     users = mongo.db.users 
     existing_user = users.find_one({'name' : request.form['username']}) 

     if existing_user is None: 
      hashpass = bcrypt.hashpw(request.form['pass'].encode('utf-8'), bcrypt.gensalt()) 
      users.insert({'name' : request.form['username'], 'password' : hashpass}) 
      session['username'] = request.form['username'] 
      return redirect(url_for('index')) 

     return 'That username already exists!' 

    return render_template('register.html') 

if __name__ == '__main__': 
    app.secret_key = 'mysecret' 
    app.run(debug=True) 
+0

你似乎并没有把发布任何瓶代码在所有。 –

+0

也添加了Python代码。请检查 –

回答

0

您可以使用:Flask-PyMongo

例如:

@app.route('/uploads/<path:filename>', methods=['POST']) 
def save_upload(filename): 
    mongo.save_file(filename, request.files['file']) 
    return redirect(url_for('get_upload', filename=filename)) 
相关问题