Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从上传到openshift数据目录并存储在postgresql数据库中的文件中获取图像路径/url?_Postgresql_Python 2.7_Flask_Openshift_Flask Sqlalchemy - Fatal编程技术网

如何从上传到openshift数据目录并存储在postgresql数据库中的文件中获取图像路径/url?

如何从上传到openshift数据目录并存储在postgresql数据库中的文件中获取图像路径/url?,postgresql,python-2.7,flask,openshift,flask-sqlalchemy,Postgresql,Python 2.7,Flask,Openshift,Flask Sqlalchemy,我是一个自学成才的编程新手,所以请容忍我。我正在尝试创建一个网站,允许用户上传他们的图像。有了另一位用户的耐心,我能够得到一些关于如何创建并允许用户将他们的图像上传到openshift上的数据驱动器的答案。但是,现在我需要能够将图像路径或url存储到postgresql数据库(稍后可以调用该数据库),以便每个用户能够跟踪他们上载的图像。我现在被这件事困扰着。 以下是我认为在回答这个问题时起着重要作用的代码片段: class Todo(db.Model): __tablen

我是一个自学成才的编程新手,所以请容忍我。我正在尝试创建一个网站,允许用户上传他们的图像。有了另一位用户的耐心,我能够得到一些关于如何创建并允许用户将他们的图像上传到openshift上的数据驱动器的答案。但是,现在我需要能够将图像路径或url存储到postgresql数据库(稍后可以调用该数据库),以便每个用户能够跟踪他们上载的图像。我现在被这件事困扰着。 以下是我认为在回答这个问题时起着重要作用的代码片段:

    class Todo(db.Model):
        __tablename__ = 'todos'
        id = db.Column('todo_id', db.Integer, primary_key=True)
        title = db.Column(db.String(60))
        text = db.Column(db.String)
        done = db.Column(db.Boolean)
        pub_date = db.Column(db.DateTime)
        user_id = db.Column(db.Integer, db.ForeignKey('users.user_id'))
        image_url = db.Column(db.String)

        def __init__(self, title, text, image_url):
            self.title = title
            self.text = text
            self.image_url = image_url
            self.done = False
            self.pub_date = datetime.utcnow()

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

    @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)

    @app.route('/new', methods=['GET', 'POST'])
    @login_required
    def new():
        if request.method == 'POST':
            if not request.form['title']:
                flash('Title is required', 'error')
            elif not request.form['text']:
                flash('Text is required', 'error')
            else:
                todo = Todo(request.form['title'], request.form['text'])
                todo.user = g.user
                db.session.add(todo)
                db.session.commit()
                flash('Todo item was successfully created')
                return redirect(url_for('index'))
        return render_template('new.html')
类待办事项(db.Model):
__tablename_uu='todos'
id=db.Column('todo\u id',db.Integer,primary\u key=True)
title=db.Column(db.String(60))
text=db.Column(db.String)
done=db.Column(db.Boolean)
发布日期=db.Column(db.DateTime)
user\u id=db.Column(db.Integer,db.ForeignKey('users.user\u id'))
image\u url=db.Column(db.String)
定义初始化(自我、标题、文本、图像url):
self.title=标题
self.text=文本
self.image\u url=image\u url
self.done=False
self.pub_date=datetime.utcnow()
允许的def_文件(文件名):
在文件名和\
app.config['ALLOWED_EXTENSIONS']中的filename.rsplit('.',1)[1]
@app.route('/upload',methods=['POST'])
def upload():
#获取上载文件的名称
file=request.files['file']
#检查文件是否为允许的类型/扩展名之一
如果文件和允许的文件(file.filename):
#确保文件名安全,删除不支持的字符
filename=secure\u文件名(file.filename)
#将文件从临时文件夹移动到
#我们设置的上载文件夹
保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
#将用户重定向到上载的_文件路由,该路由
#基本上我会在浏览器上显示上传的文件吗
返回重定向(url_用于('上载的_文件'),
文件名=文件名)
@app.route(“/uploads/”)
def上传文件(文件名):
从_目录返回发送_(app.config['UPLOAD_FOLDER'],
文件名)
@app.route('/new',methods=['GET','POST'])
@需要登录
def new():
如果request.method==“POST”:
如果不是请求。表格['title']:
flash('需要标题','错误')
elif未请求。表格['text']:
flash('需要文本','错误')
其他:
todo=todo(request.form['title'],request.form['text']))
todo.user=g.user
db.session.add(todo)
db.session.commit()
闪存(“Todo项已成功创建”)
返回重定向(url_for('index'))
返回render_模板('new.html')
我的当前代码是由各种教程和示例拼凑而成的。 目前,我正在尝试合并“Todo”db、“upload”函数和“new”函数,但收效甚微。利用我所掌握的一点知识,我只添加了“image_url”部分,其中将有一列用于存放图像路径。如果有人能解释一下这个难题,我将不胜感激。非常感谢

恭敬地,
Max

您是否将文件本地存储在web主机上?如果是这样的话,它可能很简单,只需将web服务器配置为在特定URL上提供静态内容,并让代码根据该信息生成URL。啊,是的,我确实在web主机上存储。然而,从服务器中提取特定的URL并不像我想象的那么容易。至于现在,我还在修改代码。如果我找到解决这个问题的方法,我会在这里更新。无论如何谢谢你!