我有一个REST api,它在post方法中假设一个multipartfile。

有什么方法可以在Dart / AngularDart中进行此类发布,因为到目前为止我发现的所有解决方案都无法正常工作。

我曾尝试使用http://dart-gde.github.io/dart-google-oauth2-library/multipart_file/MultipartFile.html解决方案,但由于它不支持dart.io,因此无法在浏览器中使用。

我的问题是直接来自浏览器的客户端部分。用Java编写的服务器端可以处理该帖子。

最佳答案

如果您需要分段上传文件,则要做的就是使用FormData类发送HttpRequest对象。例:

import "dart:html";

...

var fileData; //file data to be uploaded

var formData = new FormData();
formData.append("field", "value"); //normal form field
formData.appendBlob("data", fileData); //binary data

HttpRequest.request("/service-url", method: "POST", sendData: formData).then((req) {
  ...
});

此外,如果需要允许用户从其硬盘上载文件,则必须使用带有<input type="file">标记的html表单。例:

HTML文件:

<form id="myForm" action="/service-url" method="POST" enctype="multipart/form-data">
  <input type="text" name="field"> <!-- normal field -->
  <input type="file" name="fileData"> <!-- file field -->
</form>

Dart 文件:

var formData = new FormData(querySelector("#myForm"));
HttpRequest.request("/service-url", method: "POST", sendData: formData).then((req) {
  ...
});

关于dart - 如何在Dart/AngularDart中进行多部分发布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26279968/

10-12 06:17