如何在openshift上为允许用户上传图像的站点创建文件夹

时间:2014-05-18 14:48:51

标签: postgresql flask openshift flask-sqlalchemy

您好,抱歉(在这里编程新手)!我正在使用Flask和SQLalchemy创建一个使用postgresql的站点,用户可以在其中上传图像。截至目前,我一直在搞清楚如何在openshift数据目录中实现或创建一个文件夹来存储这些上传的图像。此外,我还想知道如何将这些图像定向到openshift中创建的文件夹。我正在修补我在互联网上看到的一些代码碎片。下面是我在网上使用的一个代码,它在上传到openshift时会导致问题。

app.config['UPLOAD_FOLDER'] = '/static/img/'
app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])


def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS']

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

@app.route('/upload', methods=['POST'])
def upload():
    # Get the name of the uploaded file
    file = request.files['file']
    # Check if the file is one of the allowed types/extensions
    if file and allowed_file(file.filename):
        # Make the filename safe, remove unsupported chars
        filename = secure_filename(file.filename)
        # Move the file form the temporal folder to
        # the upload folder we setup
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        # Redirect the user to the uploaded_file route, which
        # will basicaly show on the browser the uploaded file
        return redirect(url_for('uploaded_file',
                                filename=filename))

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)      

网站遇到错误,找到保存上传图片的路径(并因此将其重新调用以显示)。如果有人能够提供关于如何实现某种关系以将用户的帐户(其数据已存储在POSTgresql数据库中)与他上传的图像相关联,我将非常感激。尽量避免用繁重的编码术语说话,因为我是一个自学编码的新手。万分感谢!

尊敬, 最大

1 个答案:

答案 0 :(得分:1)

我没有看到您设置上传路径的位置,但是Openshift为数据目录提供了环境变量:OPENSHIFT_DATA_DIR。您也可以为每个用户的ID创建一个文件夹,并将他们的图片存储在自己的文件夹中。数据目录虽然不可扩展,因为它只会上传到用户点击的服务器,您需要同步每个实例的所有数据目录。也许考虑使用Amazon S3或其他存储,以便您可以扩展您的Openshift应用程序,而无需担心扩展上传。