0
私は私のHTTPサーバ上の小さな.txt
ファイルをアップロードするためのコードを持っている:それは正常に動作しています(C++のWininet)
#include <wininet.h>
#define BUF_SIZE 4096
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList * list = new TStringList();
AnsiString Path = "";
if(OpenDialog1->Execute()) {
Path = "filename=\""+OpenDialog1->FileName+"\"";
list->LoadFromFile(OpenDialog1->FileName);
}
char data[BUF_SIZE] = "";
static char hdrs[] = "Content-Type: multipart/form-data; boundary=---------------------------7d82751e2bc0858";
strcat(data,"-----------------------------7d82751e2bc0858");
strcat(data,"\n");
strcat(data,"Content-Disposition: form-data; name=\"files[]\"; ");
strcat(data,Path.c_str());
strcat(data,"\n");
strcat(data,"Content-Type: application/octet-stream");
strcat(data,"\n\n");
strcat(data,list->Text.c_str());
strcat(data,"\n");
strcat(data,"-----------------------------7d82751e2bc0858");
strcat(data,"\n");
strcat(data,"Content-Disposition: form-data; name=\"user\"");
strcat(data,"\r\n\r\n");
strcat(data,"username");
strcat(data,"\r\n");
strcat(data,"-----------------------------7d82751e2bc0858");
strcat(data,"\n");
HINTERNET hSession = InternetOpen("MyAgent",INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnect = InternetConnect(hSession, "localhost",INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", "new_upltest.php", NULL, NULL, NULL, 0, 1);
HttpSendRequest(hRequest, hdrs, strlen(hdrs), data, strlen(data));
delete list;
}
が、今は70の上に(大きなファイルをアップロードする必要よ(.jpg、.png、.bmp)と他のドキュメントタイプ(.pdf、.docxなど)である可能性があります。
このコードで私の仕事を解決することは可能ですか?私は各アドバイスに感謝します...
P.S.私のIDEはC++ Builder 6ですが、問題ではないと思います。
あなたがC++でプログラムする場合は、なぜあなたは、「データ」のための 'のstd :: STRING'を使用していませんか?あるいは、フォーマットのために 'std :: ostringstream'を使用しますか?なぜ単純なオブジェクトインスタンスとして定義するのではなく、 'list'を動的に割り当てるのですか? –
@Someprogrammerdude、質問のIDEがすべての質問に答えます:) – Incomputable
2002年のコンパイラ* facepalm *。まあ、少なくともTurboC++ 3より新しいです。 –