UE4上傳圖片

先記錄下:

 1 void UploadImageFromFile(FString FileName)
 2 {
 3     // load image
 4     TArray<uint8> ImageData;
 5     FFileHelper::LoadFileToArray(ImageData, *FileName);
 6 
 7     TSharedRef<IHttpRequest> HttpRequest = FHttpModule::Get().CreateRequest();
 8     FString Boundary = "---------------------------" + FString::FromInt(FDateTime::Now().GetTicks());
 9     HttpRequest->SetHeader(TEXT("Content-Type"), FString(TEXT("multipart/form-data; boundary=")) + Boundary);
10     HttpRequest->SetURL(TEXT("http://127.0.0.1/image/upload"));
11     HttpRequest->SetVerb(TEXT("POST"));
12 
13     FString InFileFormat(TEXT(".jpg"));
14     FString FileContents = FBase64::Encode(ImageData);
15     FString HashStr = FMD5::HashAnsiString(*FileName);
16 
17     FString PrefixBoundry = "\r\n--" + Boundary + "\r\n";
20 
21     FString FileHeader = "Content-Disposition: form-data; name=\"file\"; filename=\"" + FileName
22         + "\"\r\nContent-Type: " + InFileFormat
23         + "\"\r\nmd5Sum: " + HashStr + "\r\n\r\n";
24 
25     FString SuffixBoundary = "\r\n--" + Boundary + "--\r\n";
26 
27     /*FString ContentsString = PrefixBoundry + FileHeader + FileContents + SuffixBoundary;
28     HttpRequest->SetContentAsString(ContentsString);*/
29 
30     TArray<uint8> ContentArray;
31     FString ContentsString = PrefixBoundry + FileHeader;
32     ContentArray.Append((uint8*)TCHAR_TO_ANSI(*ContentsString), ContentsString.Len());
33     ContentArray.Append(ImageData);
34     ContentArray.Append((uint8*)TCHAR_TO_ANSI(*SuffixBoundary), SuffixBoundary.Len());
35     HttpRequest->SetContent(ContentArray);
36 
37     //綁定回調
38     HttpRequest->OnProcessRequestComplete().BindRaw(this, &HandleHttpRequestComplete, EHttpReqType::PostImage);
39 
40     //發送請求
41     HttpRequest->ProcessRequest();
42 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章