【发布时间】:2011-01-05 11:43:39
【问题描述】:
我正在编写一个脚本,将文件上传到需要多部分请求的 cgi 脚本,例如 HTML 页面上的表单。 boundary 是一个唯一标记,用于注释请求正文中的文件内容。这是一个示例正文:
--BOUNDARY
Content-Disposition: form-data; name="paramname"; filename="foo.txt"
Content-Type: text/plain
... file contents here ...
--BOUNDARY--
boundary 不能出现在文件内容中,原因很明显。
我应该怎么做才能创建一个独特的边界?我应该生成一个随机字符串,检查它是否在文件内容中,如果是,生成一个新的,冲洗并重复,直到我有一个唯一的字符串?或者“相当随机的令牌”(例如,时间戳、进程 ID 等的组合)就足够了吗?
【问题讨论】:
-
您使用什么编程语言?通常这样的事情是由图书馆处理的。
-
我正在使用 Ruby。它必须在标准库中,但不能使用 gems,因为脚本应该可以在任何安装了 ruby 的系统上运行,而无需安装 gems。
-
BOUNDARY 可能没问题,但请务必使用 \r\n (DOS 行编码),因为只需 \n 它就会优雅地失败,并出现“标题部分超过 10240 字节”错误。
标签: multipart