1

次のような状況があります。ファイルのアップロードを処理する単純なバックエンドを Flask で作成しました。ファイルを受信すると、Flask は何かを実行 (ファイルをアップロード) し、データを呼び出し元に返します。アプリには、1 つの画像と複数の画像をアップロードする 2 つのシナリオがあります。画像を 1 つアップロードすると、レスポンスが返ってくるだけで準備完了です。

ただし、複数のファイルのアップロードの処理に行き詰まっています。実際のファイルのアップロードに同じハンドラーを使用できますが、問題は、それらのすべてのファイルをリストまたは何かに保存してから処理する必要があることです。その後、それらすべての画像を含む単一のリンク (アルバム) を作成します。配達する必要があります。

ここに私のアップロード処理コードがあります:

@app.route('/uploadv3', methods=['POST'])
def upload():
    if request.method == 'POST':
        data_file = request.files["file"]
        file_name = data_file.filename
        path_to_save_to = os.path.join(app.config['UPLOAD_FOLDER'], file_name)
        data_file.save(path_to_save_to)
        file_url = upload_image_to_image_host(path_to_save_to)
        return file_url

私はフラスコでセッションを実験していましたが、セッション['リンク']のように1つのキーの下にアイテムのリストを作成し、それらすべてを取得して作業後にクリアできるかわかりません。または、他のより簡単な解決策がありますか?

セッション["link1"]などのように、おそらく各画像のキーを介してこれを行うことができると思いますが、それは画像に制限を課します(作成する画像の量に応じて)、コードを作成します非常に醜く、アルバム作成メソッドに渡されるリストを生成するためにそれぞれを反復するのは問題があり、セッションのクリアは面倒です。

最後に実際のリンクを取得し、セッションをクリアするために私が書いたいくつかのコードが続きます (これは、session['link'] に URL のリストがあることを前提としていますが、Flask でのセッション管理の知識では実際には達成できません:

def create_album(images):
    session.pop('link', None)
    new_album = im.create_album(images)
    return new_album.link

@app.route('/get_album_link')
def get_album_link():
    return create_album(session['link'])

お時間をいただきありがとうございます。

4

2 に答える 2

1

個々の値やリスト/辞書など、何でもセッションに割り当てることができます。リンクがわかっている場合は、次のようにセッションに保存できます。

session['links'] = ['link1','link2'...and so on]

このようにして、すべてのリンクのリストを取得できます。次の方法でリンクにアクセスできるようになりました。

if 'links' in session:
    for link in session['links']:
        print link

それらが完了したら、次のようにセッションをクリアできます。

if 'links' in session:
    del session['links']
于 2013-07-22T13:49:11.627 に答える
0

この仕事をするために私が何をしたかを明確にするため。最後に、画像をアップロードして匿名でアルバムに追加することは「逆に」行う必要があるように見えたので、画像をアルバムオブジェクトに追加するのではなく、画像オブジェクトをアルバム ID にアップロードしました。

アルバムのリンクを取得してセッションに入れるメソッドを作成しました: @app.route('/get_album_link')

def get_album_link():
    im = pyimgur.Imgur(CLIENT_ID)
    new_album = im.create_album()
    session.clear()
    session['album'] = new_album.deletehash
    session['album_link'] = new_album.link
    return new_album.link

後で、アップロードを処理するときに、画像をアルバムに追加するだけで、すべてが設定されます:)

uploaded_image = im.upload_image(path_of_saved_image, album=session['album'])
file_url = uploaded_image.link
return file_url

注意点の 1 つは、アルバム ID ではなく、アルバム値として渡される「deleteahash」値に画像を追加する必要があることです (imgur api ドキュメントで説明されています)。

于 2013-07-24T14:14:36.977 に答える