2012-08-06 45 views
1

我使用Curl库来模拟“multipart-form-data”提交,然后我发现我需要生成一个唯一的字符串,但我不知道该怎么做。如何在PHP中生成边界?

例如:

Content-Type: multipart/form-data; 
boundary=---------------------------491299511942 
Content-Length: 95418 
-----------------------------491299511942 
Content-Disposition: form-data; name="a" 
-----------------------------491299511942 
Content-Disposition: form-data; name="b" 
/page.asp 
-----------------------------491299511942 
Content-Disposition: form-data; name="c" 
-----------------------------491299511942 
Content-Disposition: form-data; name="d" 
true 
-----------------------------491299511942 
Content-Disposition: form-data; name="e" 
1 
-----------------------------491299511942 
Content-Disposition: form-data; name="f" 

如何产生的边界?从图书馆或只是一些黑客?

编辑:在这个例子中边界= 491299511942

回答

3

如果使用卷曲你不需要准备数据“手动”

$post_data = array(
    'a' => '@/absolute/path/to/file', 
    'b' => '@/absolute/path/to/file', 
); 
curl_setopt($ch, CURLOPT_POST, true) 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
+1

嗯,但是边界呢? – Stacker 2012-08-06 09:32:33

+0

我使用的LiveHttpHeaders,我看到数据发送像上面的例子...通常我需要准备这样的数据? – Stacker 2012-08-06 09:33:57

+3

如果给出'@filename'POST数据,Curl将正确地生成多部分/表单数据请求。您不需要手动生成它们。如果你不需要传输文件,那么你不需要multipart/form-data来开始。 – SirDarius 2012-08-06 09:35:37

2

要回答的实际问题,你可以这样做这个:

$boundary = hash('sha256', uniqid('', true));