问题描述
我已经挣扎了几个小时,试图弄清楚如何完成这项工作.我正在尝试通过 HTTP-PUT 将文件发送到 eXist 数据库.服务器有用户身份验证,所以我试图做这样的事情:
我有将文档放入的 URL我有 eXist DB 的用户名和密码我有需要通过PUT发送的内容
我尝试开始使用 cURL,但它会默默地失败我尝试使用 PHP 流,但一直收到错误 201/created",但实际上没有创建文件.
对此的任何帮助将不胜感激.
这是我尝试使用 PHP 流的一些示例代码
<前>$data = file_get_contents($tmpFile);$header = 数组(授权:基本".base64_encode($this->ci->config->item('ws_login') . ':' . $this->ci->config->item('ws_passwd')),内容类型:文本/xml");$params = 数组('http' => 数组('方法' => 'PUT','header' => $header,'内容' => $数据));$ctx = stream_context_create($params);$response = file_get_contents($url, false, $ctx);啊哈!在我的办公桌上与脾气暴躁的侏儒毛绒玩偶进行了一些橡皮擦"之后,我找到了解决方案:
<前>$data = file_get_contents($tmpFile);$params = 数组('http' => 数组('方法' => 'PUT','header' => "授权:基本".base64_encode($this->ci->config->item('ws_login') . ':' . $this->ci->config->item('ws_passwd')) ." 内容类型:文本/xml ",'内容' => file_get_contents($tmpFile)));$ctx = stream_context_create($params);$response = @file_get_contents($url, false, $ctx);返回($响应=='');I've been struggling for several hours trying to figure out how to get this work. I'm trying to send a file via HTTP-PUT to an eXist db. There is user authentication for the server, so I was trying to do something like this:
I have the URL where the doc is to be PUTted to I have the username and password for the eXist DB I have the content that needs to be sent via the PUT
I tried getting to work with cURL but it would fail silently I tried to use PHP streams, but kept getting "error 201/created" but no file was actually created.
Any help with this would be GREATLY appreciated.
Here's some sample code I tried using PHP streams
$data = file_get_contents($tmpFile); $header = array( "Authorization: Basic " . base64_encode($this->ci->config->item('ws_login') . ':' . $this->ci->config->item('ws_passwd')), "Content-Type: text/xml" ); $params = array( 'http' => array( 'method' => 'PUT', 'header' => $header, 'content' => $data)); $ctx = stream_context_create($params); $response = file_get_contents($url, false, $ctx);
Aha! After a little "rubber ducking" with the grumpy dwarf stuffed doll on my desk here, I figured out the solution:
$data = file_get_contents($tmpFile); $params = array( 'http' => array( 'method' => 'PUT', 'header' => "Authorization: Basic " . base64_encode($this->ci->config->item('ws_login') . ':' . $this->ci->config->item('ws_passwd')) . " Content-type: text/xml ", 'content' => file_get_contents($tmpFile) ) ); $ctx = stream_context_create($params); $response = @file_get_contents($url, false, $ctx); return ($response == '');
这篇关于在 PHP 中通过 HTTP PUT 发送文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!