2014-12-25 2 views
0

У меня есть очень конкретный вопрос. Поэтому я пишу приложение, которое принимает целое число и файл в фляге и сохраняет их как пару ключевых значений в MongoDB. Я писал часть mongo с помощью друга, который работает для монго, и эта часть кода работает нормально. Теперь я хочу знать, как именно я должен отправить файлы, которые я получаю из Flask, и поместить их в mongoDB.Сохранение файлов в MongoDB с использованием Flask, pymongo и GridFS?

TLDR. Я пишу файлы на диск, как я могу хранить их внутри mongoDB, используя функции, которые я уже знаю, но я сам не писал?

Учебник для принятия в файлах я нашел в http://runnable.com/UiPcaBXaxGNYAAAL/how-to-upload-a-file-to-the-server-in-flask-for-python

код я говорю о том, размещен на моем GitHub https://github.com/DavidAwad/SpaceShare/blob/master/init.py

Если вы посмотрите на линии 56. Я хочу, чтобы положить его в MongoDB прямо там, а затем удаляю его с диска, я знаю, однако, что это ужасно неэффективно, поэтому, если есть способ заставить его писать непосредственно в MongoDB и выходить из него, я все уши.

Код, который меня особенно интересует, это.

# put files in mongodb 
def put_file(file_location, room_number): 
    db_conn = get_db() 
    gfs = gridfs.GridFS(db_conn) 
    with open(file_location, "r") as f: 
     gfs.put(f, room=room_number) 

# read files from mongodb 
def read_file(output_location, room_number): 
    db_conn = get_db() 
    gfs = gridfs.GridFS(db_conn) 
    _id = db_conn.fs.files.find_one(dict(room=room_number))['_id'] 
    #return gfs.get(_id).read() 
    with open(output_location, 'w') as f: 
     f.write(gfs.get(_id).read()) 

... code code code 


    #make the file same, remove unssopurted chars 
    filename=secure_filename(file.filename) 
    #move the file to our uploads folder  
    file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename)) 
    put_file(app.config['UPLOAD_FOLDER'],space) #PUT IN MONGODB HERE? IS THIS HOW I DO THAT??? 
    # remove the file from disk as we don't need it anymore after database insert. 
    os.unlink(os.path.join(app.config['UPLOAD_FOLDER'] , filename)) 
    # maybe redirect user to the uploaded_file route, which will show the uploaded file. 

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^