Я пытаюсь использовать 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*
}