2016-07-04 16 views
0

私は、プログラムでパワーポイントを作成し、最後にダウンロードできるようにする、WebアプリケーションでPython-pptxを使用しています。人々は画像などをアップロードし、それをそれらのためのパワーポイントに挿入することができる。フラスコのアプリケーションでpython-pptxで作成されたPPTX

現在、私はPowerPointを「静的」フォルダに保存しておき、ファイルパスを使ってダウンロードリンクを作成しています。

理想的には、ファイルをサーバーに保存しないことが理想的です。これは機密情報に関するプライバシー問題を防ぐためです。人々がログインする必要がないならば、それは素晴らしいことかもしれません。パワーポイントを作るための単純で安全な方法です。

私は無駄に動作するようにsend_fileを取得しようとしました。私はそれが解決策だと思う。

は、ここに私が試したものです:

prs = Presentation() 
file_name = 'static/' + file_name + '.pptx' 

root_dir = os.path.dirname(os.getcwd()) 
path = os.path.join(root_dir, 'project', 'static', 'test.pptx') 


return send_file(prs, as_attachment=True) 

# also tried: 

# return send_file(path, mimetype='applicationvnd.openxmlformats-officedocument.presentationml.presentation', as_attachment=True) 

# which loads the page, but doesn’t trigger a download,just loads a blank page. 
# plus, it is referencing a file path which means the file was saved on the server 

は、任意のヘルプをお願い申し上げます!それは私の最初のフラスコアプリです!

ありがとうございます!

答えて

0

あなたは、「インメモリ」ファイルにおおよそこのような何かプレゼンテーションを保存することができます

from StringIO import StringIO 

out_file = StringIO() 
prs.save(out_file) 

python-pptxは、メモリがたStringIOのようにうまく流れ好きで、喜んでそれがあっただけのようにそれにファイルを書き込みますがディスクファイル。その後、開いているディスクファイルハンドルのようにダウンロード用のファイルを送信することができます。

ここでマニュアルにもう少しあります:http://python-pptx.readthedocs.io/en/latest/user/presentations.html#opening-a-file-like-presentation

+0

のみインターネット上では、あなたはそれを作成した人からの応答を取得します:)お返事ありがとうございます! (と素晴らしい素晴らしいライブラリ!) 私はまだちょっと立ち往生しています。そのファイルがメモリ内にあれば、何を送信しますか? \tリターンsend_file(out_fileパラ、MIMEタイプ=「applicationvnd.openxmlformats-officedocument.presentationml.presentation」、as_attachment =真) –

+0

まあ、私は私がしようとすると、あることをフラスコの質問だと思うが、: マイ送信ファイルは、今のようになります。 StringIOオブジェクトをout_fileとして使用し、それが機能するかどうかを確認します。典型的にはそうだろう。 send_file()のドキュメントでは、最初のパラメータの "filenameまたはfp"を認めています:http://flask.pocoo.org/docs/0.11/api/#flask.send_file。それがうまくいかない場合は、send_file()でStringIOオブジェクトを送信して検索してみてください。 – scanny

+0

素晴らしい、ありがとうございます!答えを見つけたらコメントします。私send_fileた:) –

関連する問題