私のウェブサイトの特定のディレクトリにファイルをアップロードできるようにするこのコードがありますが、アップロードされるすべてのファイル (.txt ファイルのみ) の名前を「equations.txt」に変更してから、私のし、サーバーから削除します。
たとえば、誰かが「test.txt」というファイルをアップロードした場合、それをアップロードしてから、サーバーで「equations.txt」に名前を変更する必要があります。
これまでのところ、アップロードすることができましたが、次の行を追加すると:
os.renames('/home/xxxx/public_html/xxxx.com/test/uploads/' + fn, 'equations.txt')
ディレクトリ内のファイルの名前を「equations.txt」に変更するのではなく、実際に/uploads/
ディレクトリを完全に削除します...コードは次のとおりです。
#! /usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename)
open('/home/xxxx/public_html/xxxx.com/test/uploads/' + fn, 'wb').write(fileitem.file.read())
message = "The file " + fn + " was uploaded successfully"
os.renames('/home/xxxx/public_html/xxxx.com/test/uploads/' + fn, 'equations.txt') ## Error line
else:
message = "No file was uploaded"
print ("""\
Content-type: text/html\n\n
<html>
<body>
<p>%s</p>
</body>
</html>
""") % (message)
/uploads/
上記の行を追加しなくても、コードは正常に機能し、ファイルをディレクトリにアップロードします。次のステップに進む前に、適切に名前を変更する必要があります。