我正在尝试使用TIdMultipartFormDataStream 进行多部分上传到 Box.com.虽然文件名最多为'\ u0424\u042B\u0412\u0410\u041F.txt'但它可以正常工作,但是当它更长时('\ u0424\u042B\u0412\u0410\u040F\u0420.txt')它会导致'HTTP' /1.1 400 Bad Request'.
FormField.FFieldValue长度是否有一些限制?如果是这样,有没有办法绕过它?
procedure TBoxComSaveFilter.UploadTest;
const
URL = 'https://upload.box.com/api/2.0/files/content';
var
IdHTTP: TIdHTTP;
MD: TIdMultipartFormDataStream;
begin
IdHTTP := TIdHTTP.Create(nil);
try
IdHTTP.HandleRedirects := True;
IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
IdHTTP.Request.BasicAuthentication := False;
IdHTTP.Request.CustomHeaders.Values['Authorization'] := 'Bearer ' + FAccessToken;
MD := TIdMultipartFormDataStream.Create;
try
MD.AddFormField('metadata', '{"name": "' +
'\u0424\u042B\u0412\u0410\u041F.txt' + // => OK
// '\u0424\u042B\u0412\u0410\u041F\u0420.txt' + // => 400 Bad Request
'", "parent": {"id": "0"}}', '', 'application/json');
MD.AddFile('content', 'source.txt', 'application/octet-stream');
IdHTTP.Post(URL, MD);
finally
MD.Free;
end;
finally
IdHTTP.Free;
end; …Run Code Online (Sandbox Code Playgroud)