from bottle import route, request
@route('/upload', method='POST')
def do_upload():
name = request.forms.name
data = request.files.data
if name and data and data.file:
raw = data.file.read() # This is dangerous for big files
filename = data.filename
return "Hello %s! You uploaded %s (%d bytes)." % (name, filename, len(raw))
return "You missed a field."
好吧,让我们把这个分解。
完整代码是:
HTML:
PYTHON代码:
(从你提供的医生那里)
因此,首先,我们可以看到,我们首先从html表单中的
name
和data
中提取信息,并将它们赋给变量name
和data
。很直接。但是,接下来我们将变量raw
分配给data.file.read()
。这基本上是将上传到变量raw
中的文件的全部取出来。这就是说,整个文件都在内存中,这就是为什么他们把“这对大文件是危险的”作为注释放在行的旁边。这就是说,如果你想把文件保存到磁盘上,你可以这样做(但是小心)使用如下方法:
至于你的其他问题:
1.“以文件作为参数启动系统命令的最佳方式是什么?是否可以直接将路径传递到现有文件?”
您应该看到
subprocess
模块,特别是Popen
:http://docs.python.org/2/library/subprocess.html#popen-constructor2.“上传的文件是否可以直接用于其他没有.read()的工具,然后手动将字节保存到磁盘上的指定文件?”
是的,您可以在不将文件数据保存到磁盘的情况下传递文件数据,但是,要注意内存消耗。但是,如果这些“工具”不在python中,您可能正在处理管道或子流程,以便将数据传递给这些“工具”。
文件将由您使用的例程处理。这意味着您的读操作将处理连接(根据wsgi规范,文件不应该在那里)
不工作
你可以用
相关问题 更多 >
编程相关推荐