- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我搜索了又搜索,但似乎找不到以任何合理方式将文件上传到我的 twisted.web 应用程序的方法。
目前,将文件上传发布到资源会产生一个 request.args['file']
变量,这是一个填充有文件内容的列表。我找不到获取有关文件的任何信息的方法:MIME 类型、文件名、文件大小(除了获取 args['file'][]
中字符串的长度)等.
我读到 twisted.web2 更擅长文件上传。但是,我不知道有多好,或者我将如何使用 twisted.web2 来处理 twisted.web 应用程序中的文件上传。
有什么建议吗?这让我很烦——哦,我查看了请求 header ,并没有真正发现任何重要的东西。我怎样才能获得更多有关使用 Twisted 上传文件的元信息?
我怎样才能从请求对象中获取纯 HTTP 请求?可能吗?
最佳答案
这是一个老问题,但是快速搜索 stackoverflow 并没有找到类似的问题/答案,所以这里是一个使用 twisted.web2
进行文件上传的快速示例。
隐藏的表单变量 file_foo
与文件上传变量,以显示 Twisted 将如何拆分它们:
<form action="/upload?a=1&b=2&b=3" enctype="multipart/form-data"
method="post">
<input type="hidden" name="foo" value="bar">
<input type="hidden" name="file_foo" value="not a file">
file_foo: <input type="file" name="file_foo"><br/>
file_foo: <input type="file" name="file_foo"><br/>
file_bar: <input type="file" name="file_bar"><br/>
<input type="submit" value="submit">
</form>
在您的 Resource.render()
方法中,您可以通过以下方式访问表单变量:
def render(self, ctx):
request = iweb.IRequest(ctx)
for key, vals in request.args.iteritems():
for val in vals:
print key, val
print 'file uploads ----------------'
for key, records in request.files.iteritems():
print key
for record in records:
name, mime, stream = record
data = stream.read()
print ' %s %s %s %r' % (name, mime, stream, data)
return http.Response(stream='upload complete.')
输出:
a: 1
b: 2 3
foo: bar
file_foo: not a file
file_bar
bar.txt MimeType('text', 'plain', {}) <open file '<fdopen>', mode 'w+b' at 0x2158a50> 'bar data.\n\n'
file_foo
foo.txt MimeType('text', 'plain', {}) <open file '<fdopen>', mode 'w+b' at 0x2158930> 'foo data.\n\n'
foo.txt MimeType('text', 'plain', {}) <open file '<fdopen>', mode 'w+b' at 0x21589c0> 'foo data.\n\n'
关于python - 我怎样才能在 twisted.web 中完成不糟糕的文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271155/
我想在这里说的是我在从之前离开的相同状态重新启动我的应用程序时遇到的问题。我在这方面做了很多研发,并且已经解决了 stackoverflow 中发布的问题。所以请不要说它是重复的。 我试过设置这些选项
当我在我的类中实现 __cmp__ 函数时,python 是否会在内部重载“==”,我们在 C++ 中是如何做到的? 只是好奇。我是 python 的新手。 :) 最佳答案 ==的含义当您定义 __c
我在 Raspberry Pi2 上安装了 Gitlab,几个月来它运行良好。但自从关闭了RPi的电源后,它就不再起作用了。网页返回502错误。 502 Whoops, GitLab is takin
有人知道用户登陆带有Webfonts的页面时为什么Google Chrome浏览器崩溃吗 它并不会一直发生,而是经常发生 我刚得到一个蓝屏页面,却不知道为什么:该页面不是来自重定向时就很好了。 这是我
当我登录时,Skype始终会给出此错误。 糟糕,Skype存在问题。尝试注销然后重新登录。 STARTUP_LOAD_ERROR MACBOOK 最佳答案 Macbook 用户 退出Skype 回家
我正在尝试从 flutter 开始,首先我在 cmd 上运行 flutter doctor 它有效。在我安装了 ANDROID SDK 之后,同样的命令 flutter doctor 给了我异常:
从 android studio 终端运行 flutter attach 不工作。显示错误flutter 意外退出。 终端输出: flutter attach Checking for adverti
当使用 TinyMCE 4 测试所有浏览器时,Chrome 非常慢。 (我尝试从 TinyMCE 中删除所有插件,但没有任何区别。) Chrome 需要大约 20-25 秒在 TinyMCE 中呈现一
我试图让下面的脚本工作,以便从远程服务器(服务器 1)读取特定目录中的 CSV 文件列表,并将数据移植到另一台服务器的 PostgreSQL 数据库中。 我已经创建了一个 rsa SSH key 并将
在嵌入式 linux 环境中(在 PowerPC 上定制的 2.4.25)几个小时后我得到以下内核 panic : Oops: kernel access of bad area, sig: 11 N
在将现有 Node.js (Hapi.js) + RethinkDB 从 OVH VPS(最小 vps)迁移到 AWS Lambda( Node )+ DynamoDB 的过程中,我最近遇到了一个非常
我是一名优秀的程序员,十分优秀!