views.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from app import app
  2. import os
  3. from flask import make_response
  4. from flask import Flask, request, redirect, url_for, send_from_directory, render_template
  5. import subprocess
  6. import time
  7. #https://medium.com/@emerico/convert-pdf-to-image-using-python-flask-2864fb655e01
  8. #UPLOAD_FOLDER = '/Users/beatescheibel/Desktop/flask/uploads'
  9. UPLOAD_FOLDER = '/home/bscheibel/uploads_app'
  10. app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER
  11. ALLOWED_EXTENSIONS = set(['pdf', 'png', 'jpg', 'jpeg', 'PDF'])
  12. def allowed_file(filename):
  13. return '.' in filename and \
  14. filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
  15. @app.route('/', methods=['GET', 'POST'])
  16. def upload_file():
  17. if request.method == 'POST':
  18. file = request.files['file']
  19. if file and allowed_file(file.filename):
  20. filename = file.filename
  21. #image = wandImage(filename=filename)
  22. #image.save(os.path).join(app.config["UPLOAD_FOLDER"], filename)
  23. file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
  24. return redirect(url_for('uploaded_file', filename=filename))
  25. return '''
  26. <!doctype html>
  27. <title>Upload new File</title>
  28. <h1>Upload new File</h1>
  29. <form action="" method=post enctype=multipart/form-data>
  30. <p><input type=file name=file>
  31. <input type=submit value=Upload>
  32. </form>
  33. '''
  34. def convert_pdf(filename):
  35. PDFFILE = UPLOAD_FOLDER +"/" + filename
  36. subprocess.call(['pdftoppm', '-jpeg', '-singlefile',
  37. PDFFILE, '/home/bscheibel/uploads_app/out'])
  38. @app.route('/show/<filename>')
  39. def uploaded_file(filename):
  40. file_out = "out.jpg"
  41. if filename.endswith(".pdf") or filename.endswith(".PDF"):
  42. convert_pdf(filename)
  43. return render_template('show_image.html', filename=file_out)
  44. else:
  45. filename = filename
  46. return render_template('show_image.html', filename=filename)
  47. @app.route('/uploads/<filename>')
  48. def send_file(filename):
  49. return send_from_directory(UPLOAD_FOLDER, filename)
  50. # No caching at all for API endpoints.
  51. @app.after_request
  52. def add_header(response):
  53. # response.cache_control.no_store = True
  54. response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0'
  55. response.headers['Pragma'] = 'no-cache'
  56. response.headers['Expires'] = '-1'
  57. return response