Я пытаюсь использовать WinHttpRequest для загрузки файла, но он не работает.
Файл PHP работает из приложения Cordova, которое я сделал.
Я не знаю, что еще делать.
Может кто-нибудь, пожалуйста, помогите.
Благодарю.
Код VFP:
filecontent = FileToStr(ficheiro)
loHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
loHTTP.Open("POST", "http://-----.com/webspace/upload.php", .F.)
loHTTP.SetRequestHeader("content-type", "text/plain")
varrequest = 'attachment; filename="' + JUSTFNAME(ficheiro) + '"'
loHTTP.SetRequestHeader("content-disposition", varrequest)
loHTTP.Send(filecontent)
WAIT WINDOW loHTTP.status
Код в upload.php:
<?php
$uploaddir = 'upload/';
$uploadfile = $uploaddir . $_FILES['file']['name'];
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
echo "File successfully uploaded.\n";
}
?>
Ошибки PHP:
[12-Dec-2018 12:28:02 UTC] PHP Notice: Undefined index: file in /home/webspace/upload.php on line 3
[12-Dec-2018 12:28:02 UTC] PHP Notice: Undefined index: file in /home/webspace/upload.php on line 5
********************************* РЕДАКТИРОВАТЬ **************** *********
я изменил код, а теперь я получаю файл как «HTTP_RAW_POST_DATA», когда я делаю var_dump в PHP
текущий код:
loHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
loHTTP.Open("POST", "http://www.----------.com/webspace/getfile.php", .F.)
xBOUNDARY = "+++++"vbCrLf = CHR(10) + CHR(13)
filecontent = "--" + xBOUNDARY + vbCrLf
filecontent = filecontent + 'Content-Disposition: form-data; name="file"; filename="' + JUSTFNAME(ficheiro) + '"' + vbCrLf
filecontent = filecontent + "Content-type: text/plain" + vbCrLf + vbCrLf
filecontent = filecontent + FileToStr(ficheiro)
filecontent = filecontent + vbCrLf
filecontent = filecontent + "--" + xBOUNDARY + "--"filecontent = filecontent + vbCrLf
loHTTP.SetRequestHeader("CONTENT_TYPE", "multipart/form-data; boundary=" + xBOUNDARY + vbCrLf)
loHTTP.SetRequestHeader("CONTENT_NAME", JUSTFNAME(ficheiro) + vbCrLf)
loHTTP.Send(filecontent)
var_dump в PHP:
array(7) {
["HTTP_RAW_POST_DATA"]=>
string(245) "--+++++
Content-Disposition: form-data; name="file"; filename="Oo2Teste.txt"
Content-type: text/plain
00000000000000|00000000000000| BASE|00|GERAL|00|00
1.1|1.1|Leiria - PD Azambuja - CMR1|00|GERAL|00|00
T|T|TESTE|00|GERAL|00|00
--+++++--
"["_GET"]=>
array(0) {
}
["_POST"]=>
array(0) {
}
["_COOKIE"]=>
array(0) {
}
["_FILES"]=>
array(0) {
}
["_SERVER"]=>
array(38) {
["PATH"]=>
string(28) "/usr/local/bin:/usr/bin:/bin"["TEMP"]=>
string(4) "/tmp"["TMP"]=>
string(4) "/tmp"["TMPDIR"]=>
string(4) "/tmp"["PWD"]=>
string(1) "/"["HTTP_ACCEPT"]=>
string(3) "*/*"["HTTP_CONNECTION"]=>
string(10) "Keep-Alive"["CONTENT_TYPE"]=>
string(25) "text/plain; Charset=UTF-8"["CONTENT_LENGTH"]=>
string(5) "20341"["HTTP_USER_AGENT"]=>
string(57) "Mozilla/4.0 (compatible; Win32; WinHttp.WinHttpRequest.5)"["HTTP_CONTENT_TYPE"]=>
string(35) "multipart/form-data; boundary=+++++"["HTTP_CONTENT_NAME"]=>
string(14) "Oo2Teste.txt"["UNIQUE_ID"]=>
string(27) "XBI5X4NTz1un6WhRwU29ewAAAM0"["gzip-only-text/html"]=>
string(1) "1"["SERVER_SIGNATURE"]=>
string(0) ""["SERVER_SOFTWARE"]=>
string(6) "Apache"["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.1"["REQUEST_METHOD"]=>
string(4) "POST"["QUERY_STRING"]=>
string(0) ""["REQUEST_TIME_FLOAT"]=>
float(1544698207.5962)
["REQUEST_TIME"]=>
int(1544698207)
}
["GLOBALS"]=>
*RECURSION*
}
Задача ещё не решена.
Других решений пока нет …