Nasıl bir php komut dosyası tarafından okunabilir Winınet kullanarak bir dosya aktarabilirim?

3 Cevap php

Ben dosya bir web formunu kullanarak transfer ediliyordu sanki Winınet kullanarak bir Web sunucusu için bir metin dosyası aktarmak gibi bu mesaj sunucuya dosya. Olur

Cevaplar dayanarak ben aşağıdaki kodu denedim aldık:

 static TCHAR hdrs[] = "Content-Type: multipart/form-data\nContent-Length: 25";
 static TCHAR frmdata[] = "file=filename.txt\ncontent";

   HINTERNET hSession = InternetOpen("MyAgent",
      INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
   HINTERNET hConnect = InternetConnect(hSession, "example.com",
      INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
   HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", "test.php", NULL, NULL, NULL, 0, 1);
   HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));");

Dnm.php komut yürütülüyor, ancak doğru veri elde edilmesi görünmüyor.

Herkes bana herhangi bir ek yardım verebilir veya bir yere bakmak için? Teşekkürler.

3 Cevap

Aşağıdaki çözüldü sorunun form verilerini ve yukarıda vardı başlıklarını değiştirme:

  static TCHAR frmdata[] = "-----------------------------7d82751e2bc0858\nContent-Disposition: form-data; name=\"uploadedfile\"; filename=\"file.txt\"\nContent-Type: text/plain\n\nfile contents  here\n-----------------------------7d82751e2bc0858--";
  static TCHAR hdrs[] = "Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858";

Adlı bir zamanda bu bir adım atalım.

İlk HTTP başlıklarını ilgilendim:

  1. Content-Type: multipart / form-data
  2. Content-Length: bir bayt toplamı bağlıdır

Sonra bir POST Form içeriği ile bir dize oluşturmak zorunda. Eğer giriş adında dosya var varsayalım:

file=filename.txt
<You now add the content of the file after that carriage return>

Bu dizenin uzunluğunu hesaplamak ve yukarıda Content-Length koymak.

Tamam tam bir HTTP isteği bu gibi görünecektir:

POST /file_upload.php HTTP/1.0
Content-type: multipart/form-data
Content-length: <calculated string's length: integer>

file=filename.txt
...File Content...

Şimdi PHP kılavuzda bazı kod:

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

Beni bilmek Herhalde içerik formatını berbat ettik ama bu genel bir fikir.

Here 'o yer şeylerin genel açıklamasını sa. Temel olarak, bir web adresine bir HTTP isteği oluşturmak isteği bilgi eklemek ve daha sonra göndermek zorunda. İsteğiniz halinde bir POST isteği olmalıdır.