0

subprocess.Popen よりもこれを行うためのより良い方法があることは知っていますが、時間のために、それが私が使用しているものです。Web アプリを介して Linux ボックスにファイルを保存する save_input.cgi というスクリプトがあります。ファイルを保存したら、そのファイル名を引数として別のスクリプトに渡す必要があります。これはおそらく私が見逃している単純なものですが、これまでのところ私が持っているものは次のとおりです。

#!/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.replace("\\", "/" ))
  open('/tmp/' + fn, 'wb').write(fileitem.file.read())

  message = 'The file "' + fn + '" was uploaded successfully'
  subprocess.Popen(["python", "mod_check.py", '/tmp/' + fn])      

else:
   message = 'No file was uploaded'

print """\
Content-Type: text/html\n
<html>
<body>
   <p>%s</p>
</body>
</html>
""" % (message,)

考え?どうもありがとう、私はこのコミュニティに多くの借りがあります(笑)。

*if fileitem.filenameブロックにサブプロセスを含めるように更新しただけですが、ファイル名と場所を引数としてスクリプトに渡していないようです。別のコメントに答えるには、「sudo python mod_check.py filename.txt」を手動で入力すると、このスクリプトは機能します

4

1 に答える 1

0

私が見落とした単純なこと。jordanmの応答を使用して解決しました。コードブロックに追加されました'iffileitem.filename'

于 2013-03-01T21:12:53.573 に答える