• 欢迎访问3y4.net,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎指导 l42OO5382 8 # q q. c o m>

Lazarus或Delphi的Web开发通过 mORMot 上传各种文件

其它 weyso 3个月前 (03-13) 181次浏览

SynopseSmall.png

版本mORMot-1.18.4952可能是bug解析上传文件时少最后一个字节,同样的代码使用2022.02.28最新下载的版本mORMot-master测试正常;

如果需要一次上传多个文件或单个文件大于两三百M则需要改进代码。

procedure TForm1.Button1Click(Sender: TObject);

var

  parts: SynCommons.TMultiPartDynArray;

  sFile, fileName : string;

  fs: Tfilestream;

  rs: TRawByteStringStream;

  data, ContentType : RawUTF8;

  OpenDialog1:TOpenDialog;

begin

  OpenDialog1:=TOpenDialog.Create(nil);

  if not OpenDialog1.Execute then Exit;

  sFile := OpenDialog1.FileName;

  fileName := ExtractFileName(sFile);

  fileName := AnsiToUTF8(fileName);

  try

    fs := Tfilestream.Create(sFile, fmOpenRead);

    rs := TRawByteStringStream.Create;

    rs.CopyFrom(fs, fs.Size);

    SetLength(parts, 0);  //

    ContentType:='multipart/form-data;boundary=' +IntToHex(Random(MaxInt), 8) + '_info_boundary'; 

    syncommons.MultiPartFormDataAddField('file', rs.DataString, parts);

    SynCommons.MultiPartFormDataEncode(parts, ContentType, data);

  finally

    rs.Free;

    fs.Free;

    OpenDialog1.Free;

  end;

  TWinHTTP.Post('http://123.cc:888', data, ContentType);

end;


3y4.net , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:
Lazarus或Delphi的Web开发通过 mORMot 上传各种文件
喜欢 (0)