WinHttpRequest загрузить файл - PullRequest
0 голосов
/ 12 декабря 2018

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