我想在POST中发送一个原始的二进制文件以及其他一些使用cURL的数据。 基本上,我这样做:用cURL发送原始的二进制和数据
//Here i create the CURLFile
$cfile = new CURLFile($fullpath,'application/xml', $filename);
//Data to upload (including the file)
$data_upload = array('username' => $username,
'password' => $password,
'owner' => $owner,
'destination' => $pathpda,
'filename' => $filename,
'filedata' => $cfile);
//Upload
$ch_upload = curl_init($urlws.$e_upload);
curl_setopt($ch_upload, CURLOPT_POST,true);
curl_setopt($ch_upload, CURLOPT_POSTFIELDS, $data_upload);
curl_setopt($ch_upload, CURLOPT_RETURNTRANSFER, true);
$response_upload = curl_exec($ch_upload);
curl_close($ch_upload);
一切工作正常。除此之外,我希望我的文件只是二进制数据而不是磁盘上的真实文件。另外,我需要发送请求中的其他数据! 有谁知道该怎么做?我抬头看着谷歌,但我无法找到一种方法来发送原始二进制文件和其他数据。 谢谢!
UPDATE 为了进一步阐明我的问题,我不需要发送随机二进制数据,而是一个内容来自ob_get_contents()(例如)的文件,因此它不是磁盘上的物理文件。如果我只是替换CURL文件来发送带“filedata”变量的二进制文件数据,它根本不起作用。 Web服务无法识别该文件。也许有一种方法可以创建一个CURL文件而不用指向一个真实的文件。
你的问题是如何发送光盘上不是真实文件的数据? – fico7489
我的问题是如何发送未保存在服务器磁盘上的文件(例如从数据库检索到的文件或ob_get_contents()的输出)以及使用cURL的其他常用后期数据。 – greg
按照'FILE'这个词的定义,它被存储在一个'文件夹中的磁盘上,否则它只是内容。文件和文件系统只是数据存储的范例,您只需发送与发送用户名字符串不同的内容。 –