您好,抱歉(在这里编程新手)!我正在使用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数据库中)与他上传的图像相关联,我将非常感激。尽量避免用繁重的编码术语说话,因为我是一个自学编码的新手。万分感谢!
尊敬, 最大
答案 0 :(得分:1)
我没有看到您设置上传路径的位置,但是Openshift为数据目录提供了环境变量:OPENSHIFT_DATA_DIR
。您也可以为每个用户的ID创建一个文件夹,并将他们的图片存储在自己的文件夹中。数据目录虽然不可扩展,因为它只会上传到用户点击的服务器,您需要同步每个实例的所有数据目录。也许考虑使用Amazon S3或其他存储,以便您可以扩展您的Openshift应用程序,而无需担心扩展上传。