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
Вам не нужно ничего настраивать. Просто убедитесь, что запросы привязаны к вашему 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
.
Технические ограничения с использованием запросов PUT и DELETE не связаны с PHP или Apache2; вместо этого бремя отправки таких запросов лежит на браузере.
Простое добавление