jQuery を使わないで Python3 の cgi でファイルをアップロードする方法です。
複数のファイルを同時にアップロードできます。
upload_python.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>upload python (Apr/11/2021)</title>
</head>
<body>
<h2>HTML5</h2>
<form method="post" action="upload_python.py" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<p><input type="submit" value="送信する"></p>
</form>
<blockquote>
<p>File is uploaded to /tmp.</p>
</blockquote>
<hr />
Nginx<br />
<blockquote>
<pre>
server {
client_max_body_size 20M;
</pre>
</blockquote>
<hr />
Apr/11/2021 AM 08:25<p />
</body>
</html>
upload_python.py
# ! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# upload_python/upload_python.py
#
# Apr/11/2021
#
# --------------------------------------------------------------------
import os
import sys
import cgi
#
# --------------------------------------------------------------------
def single_upload_file_proc(upload_dir,item):
filename = item.filename
try:
path = os.path.join(upload_dir,os.path.basename(filename))
chunk = item.file.read()
if chunk:
fout = open(path,mode='wb')
fout.write(chunk)
print(filename + "<br />")
fout.close()
os.chmod(path, 0o666)
except Exception as ee:
print("*** error *** single_upload_file_proc ***<br />")
print(filename + "<br />")
print(str (ee))
print("<br />")
# --------------------------------------------------------------------
def multi_uploaded_file_proc(upload_dir,fileitem):
#
for item in fileitem:
single_upload_file_proc(upload_dir,item)
#
# --------------------------------------------------------------------
upload_dir = "/tmp"
#
print("Content-Type: text/html")
print("")
form = cgi.FieldStorage()
if "files" in form:
fileitem = form["files"]
print(isinstance (fileitem,list))
print("<br />")
if (isinstance(fileitem,list)):
multi_uploaded_file_proc(upload_dir,fileitem)
else:
single_upload_file_proc(upload_dir,fileitem)
else:
print("*** Select files ***<br />")
print("*** end ***<br />")
#
# --------------------------------------------------------------------
jQuery を使ったアップロードのサンプル
Python3: ファイルのアップロード