Как включить и использовать HTTP PUT и DELETE с Apache2 и PHP?

Hy там, в моем случае я использую среду разработки asp.net, поэтому я хочу загрузить эти данные в asynchronus ajax-запрос, в [webMethod] вы не можете поймать загрузчик файлов, поскольку он не является статическим элементом, поэтому я должен был сделать оборот для такого решения, установив путь, чем преобразовать желаемое изображение в байты, чтобы сохранить его в БД.

Вот моя функция javascript, надеюсь, что вам это поможет:

function FixPath(Path)
         {
             var HiddenPath = Path.toString();
             alert(HiddenPath.indexOf("FakePath"));

             if (HiddenPath.indexOf("FakePath") > 1)
             {
                 var UnwantedLength = HiddenPath.indexOf("FakePath") + 7;
                 MainStringLength = HiddenPath.length - UnwantedLength;
                 var thisArray =[];
                 var i = 0;
                 var FinalString= "";
                 while (i < MainStringLength)
                 {
                     thisArray[i] = HiddenPath[UnwantedLength + i + 1];
                     i++;
                 }
                 var j = 0;
                 while (j < MainStringLength-1)
                 {
                     if (thisArray[j] != ",")
                     {
                         FinalString += thisArray[j];
                     }
                     j++;
                 }
                 FinalString = "~" + FinalString;
                 alert(FinalString);
                 return FinalString;
             }
             else
             {
                 return HiddenPath;
             }
         }

здесь только для тестирования:

 $(document).ready(function () {
             FixPath("hakounaMatata:/7ekmaTa3mahaLaziz/FakePath/EnsaLmadiLiYghiz");
         });
// this will give you : ~/EnsaLmadiLiYghiz
30
задан j0k 26 January 2014 в 12:27
поделиться

2 ответа

Вам не нужно ничего настраивать. Просто убедитесь, что запросы привязаны к вашему PHP-файлу и используют запросы с информацией о пути. Например, если у вас в корне есть файл с именем handler.php с таким содержанием:

<?php

var_dump($_SERVER['REQUEST_METHOD']);
var_dump($_SERVER['REQUEST_URI']);
var_dump($_SERVER['PATH_INFO']);

if (($stream = fopen('php://input', "r")) !== FALSE)
    var_dump(stream_get_contents($stream));

Следующий HTTP-запрос будет работать:

Established connection with 127.0.0.1 on port 81
PUT /handler.php/bla/foo HTTP/1.1
Host: localhost:81
Content-length: 5
 
boo
HTTP/1.1 200 OK
Date: Sat, 29 May 2010 16:00:20 GMT
Server: Apache/2.2.13 (Win32) PHP/5.3.0
X-Powered-By: PHP/5.3.0
Content-Length: 89
Content-Type: text/html
 
string(3) "PUT"
string(20) "/handler.php/bla/foo"
string(8) "/bla/foo"
string(5) "boo
"
Connection closed remotely.

Вы можете скрыть расширение "php" с помощью MultiViews или сделать URL полностью логичными с помощью mod_rewrite.

Смотрите также документацию по директиве AcceptPathInfo и этот вопрос о том, как заставить PHP не разбирать POST-данные, если enctype равен multipart/form-data.

15
ответ дан 28 November 2019 в 00:31
поделиться

Технические ограничения с использованием запросов PUT и DELETE не связаны с PHP или Apache2; вместо этого бремя отправки таких запросов лежит на браузере.

Простое добавление

не сработает, потому что нет браузеров, поддерживающих этот метод (и они просто по умолчанию будут использовать GET, обрабатывая PUT так же, как и тарабарщину, такую ​​как FDSFGS) . К сожалению, эти HTTP-команды ограничены областью браузеров, не относящихся к настольным приложениям (например, потребителями веб-сервисов).

-6
ответ дан 28 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: