在 PHP 中通过 HTTP PUT 发送文件 [英] Sending a file via HTTP PUT in PHP

查看:26
本文介绍了在 PHP 中通过 HTTP PUT 发送文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经挣扎了几个小时,试图弄清楚如何完成这项工作.我正在尝试通过 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 发送文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆