am_dot_com

CN 2023-04-26

Apr 26th, 2023 (edited)
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. <!-- upload_interface.html -->
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Upload file to local FS</title>
  7. </head>
  8. <body>
  9. <form action="/upload"
  10. method="post"
  11. enctype="multipart/form-data"
  12. >
  13. <label for="idFile">Pick the file to upload: </label>
  14. <input type="file"
  15. name="nameFile"
  16. id="idFile"
  17. ><!-- para seleção do ficheiro -->
  18. <br>
  19. <input type="submit"
  20. value="confirm file"
  21. ><!-- sinalizar ficheiro escolhido, iniciar upload -->
  22. </form>
  23. </body>
  24. </html>
  25.  
  26. *****
  27. # application.py
  28. import os
  29.  
  30. from flask import Flask,\
  31. request, \
  32. render_template
  33.  
  34. from werkzeug.utils import \
  35. secure_filename
  36.  
  37.  
  38. UPLOAD_ELEMENT = "nameFiles" # plural nesta v2
  39.  
  40. application = Flask(__name__)
  41. application.config['UPLOAD_FOLDER']="dls"
  42.  
  43. @application.route("/", methods=['GET', 'POST'])
  44. def root():
  45. return render_template("upload_interface.html")
  46. # def root
  47.  
  48. @application.route("/upload", methods=['POST'])
  49. def process_uploads():
  50. ret = "<ul>"
  51. upload_results = upload()
  52. if(
  53. upload_results!=False \
  54. and \
  55. type(upload_results)==dict \
  56. ):
  57. for src_fname in upload_results.keys():
  58. bOK = upload_results[src_fname]!=False
  59. if(bOK):
  60. dst:str=upload_results[src_fname]
  61. fb:str=f"File {src_fname} uploaded OK to {dst}"
  62. else:
  63. fb: str = f"Failed to upload file {src_fname}"
  64. # if-else
  65.  
  66. ret+=f"<li>{fb}</li>"
  67. #for
  68. ret+="</ul>"
  69. return ret
  70. else:
  71. return upload_results # será um frase, neste caso
  72. # if-else
  73. # def process_uploads
  74.  
  75. def upload():
  76. ret:dict = dict()
  77.  
  78. # theFile = request.files[UPLOAD_ELEMENT] # single file
  79. theFiles = request.files.getlist(UPLOAD_ELEMENT)
  80. if(theFiles):
  81. for oFile in theFiles:
  82. src_fname = oFile.filename
  83. sec_fname = secure_filename(src_fname)
  84.  
  85. prefix: str = os.path.join(
  86. application.root_path,
  87. application.config['UPLOAD_FOLDER']
  88. )
  89. if(sec_fname):
  90. dst_name = os.path.join(
  91. prefix,
  92. sec_fname
  93. )
  94. try:
  95. oFile.save(
  96. dst=dst_name
  97. )
  98. ret[src_fname]=dst_name
  99. except Exception as e:
  100. ret[src_fname]=False
  101. # try-except
  102. # if got secure file name
  103. # for every uploaded file
  104. else:
  105. return f"Files not received."
  106. # if-else
  107.  
  108. return ret
  109. # def upload
  110.  
  111. if(__name__=='__main__'):
  112. application.run(
  113. #host
  114. #port
  115. debug=True
  116. )
Advertisement
Add Comment
Please, Sign In to add comment