如何使用Multipart.FormData上传HttpEntity.Chunked与阿卡的HTTP客户端

如何使用Multipart.FormData上传HttpEntity.Chunked与阿卡的HTTP客户端

问题描述:

当试图在多部分组成一个大文件上传到服务器chunked entity如何使用Multipart.FormData上传HttpEntity.Chunked与阿卡的HTTP客户端

val chunked = HttpEntity.Chunked.fromData(mimeType, sourceOfByteString) 

Multipart.FormData(
     Multipart.FormData.BodyPart("downloadPath", HttpEntity(fileResourceRequest.downloadPath.path)), 
     Multipart.FormData.BodyPart("fileSize", HttpEntity(fileResourceRequest.fileSize.toString)), 
     Multipart.FormData.BodyPart("data", chunked, Map("filename" → "content")) 
    ).toEntity() 

我得到这个错误:

Type mismatch: expected BodyPartEntity, actual HttpEntity.Chunked

当手动添加传输编码:分块header时,根据文档,Akka-http将其删除。

我能够使用curl

curl -i -X POST \ 
    -H "Content-Type:multipart/form-data" \ 
    -H "Authorization:Bearer BB3F8B79384D08B9F268F21FF76ABFA" \ 
    -H "Transfer-Encoding:chunked" \ 
    -F "downloadPath=/user-data/media/dachi.png" \ 
    -F "fileSize=733830" \ 
    -F "[email protected]\"./dachi.png\";type=image/png;filename=\"dachi.png\"" \ 
'http://0.0.0.0:8000' 

使用HttpEntity.IndefiniteLength按照文档成功执行完全相同的上传: