当前位置:   article > 正文

UE4如何上传文件_ue4 http from-data 的用法

ue4 http from-data 的用法

上传文件示例代码

  1. /*
  2. InUrl为上传URL
  3. InFiles为本地文件路径的数组
  4. Boundary为分隔符,用来分隔文件,其他地方不能出现该字符串,每个文件都以"\r\n--"+Boundary+"\r\n"开始(即BeginBoundry)
  5. 分隔符之后是文件头(FileHeader),文件头中name为文件域,这里用"file[]",[]表示上传多个文件,如果是一个文件可去掉[];filename为文件名,这里用本地文件名;文件头以两个换行符(\r\n\r\n)结束
  6. 文件头之后紧跟文件内容
  7. 所有文件内容都读出之后,最后以"\r\n--"+Boundary+"--\r\n"结束
  8. */
  9. bool UploadFiles(const FString& InUrl,const TArray<FString>& InFiles)
  10. {
  11. TSharedRef<IHttpRequest> HttpRequest = FHttpModule::Get().CreateRequest();
  12. HttpRequest->SetURL(InUrl);
  13. FString Boundary = "---------------------------" + FString::FromInt(FDateTime::Now().GetTicks());//分隔符
  14. HttpRequest->SetHeader(TEXT("Content-Type"), TEXT("multipart/form-data; boundary =" + Boundary));//请求头,数据格式必须是multipart/form-data
  15. HttpRequest->SetVerb(TEXT("POST"));
  16. TArray<uint8> UploadContent;
  17. for (const FString& FilePath : InFiles)
  18. {
  19. TArray<uint8> ArrayContent;
  20. if (FFileHelper::LoadFileToArray(ArrayContent, *FilePath))
  21. {
  22. FString BeginBoundry = "\r\n--" + Boundary + "\r\n";
  23. UploadContent.Append((uint8*)TCHAR_TO_ANSI(*BeginBoundry), BeginBoundry.Len());
  24. FString FileHeader = "Content-Disposition: form-data;";//文件头
  25. FileHeader.Append("name=\"file[]\";");
  26. FileHeader.Append("filename=\"" + FPaths::GetCleanFilename(FilePath) + "\"");
  27. FileHeader.Append("\r\nContent-Type: \r\n\r\n");
  28. UploadContent.Append((uint8*)TCHAR_TO_ANSI(*FileHeader), FileHeader.Len());
  29. UploadContent.Append(ArrayContent);
  30. }
  31. }
  32. FString EndBoundary = "\r\n--" + Boundary + "--\r\n";//结束符
  33. UploadContent.Append((uint8*)TCHAR_TO_ANSI(*EndBoundary), EndBoundary.Len());
  34. HttpRequest->SetContent(UploadContent);
  35. return HttpRequest->ProcessRequest();
  36. }

最终的上传内容类似于以下格式:


------------------------------1498579920
Content-Disposition: form-data;name="files[]";filename="A1.png"
Content-Type: 


{文件内容}
------------------------------1498579920
Content-Disposition: form-data;name="files[]";filename="A2.png"
Content-Type: 


{文件内容}
------------------------------1498579920
Content-Disposition: form-data;name="files[]";filename="A3.png"
Content-Type: 


{文件内容}
------------------------------1498579920--


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/91174
推荐阅读
相关标签
  

闽ICP备14008679号