dart - 使用Aqueduct 3.0处理分段上传

标签 dart aqueduct

我在客户端使用AngularDart,在API /服务器使用Aqueduct 3.0。我现在想上传文件并将其存储在文件系统中。

有没有推荐的方法, Aqueduct 如何接收文件/多部分表单请求并将其存储在本地?

我一直在研究其他几个服务器框架,但是所有框架都是为Dart 1而非Dart 2构建的。在我开始弄清楚如何编写自己的服务器以接收和存储文件之前,我想我会问首先,正如我所见,有人在GitHub上以#315要求它。

在Angular中,上传功能如下所示(file_uploader.dart)

import 'dart:html';

import 'package:angular/angular.dart';
import 'package:angular_forms/angular_forms.dart';

/// AngularDart component for uploading files
// https://gist.github.com/alexd1971/67f4502c5e0d594d30f901fb0559fd7e
@Component(
  selector: 'file-uploader',
  templateUrl: 'file_uploader.html',
  directives: [coreDirectives, formDirectives]
)
class FileUploader {
  String progress;
  void uploadFiles(form) {
    var formData = new FormData(form);
    final request = new HttpRequest();
    request.open('POST', 'http://localhost:9999/upload');
    request.upload.onProgress.listen((ProgressEvent e) {
      progress = (e.loaded*100/e.total).toInt().toString() + '%';
    });
    request.onLoad.listen((e) {
      print('Uploaded');
    });
    request.send(formData);
  }
}

最佳答案

这项功能已排在队列中,一旦Dart 2出现问题,我们就可以开始工作。您还可以通过创建Codec子类(来自标准lib dart:convert)来扩展框架,以在项目中使用该框架,该子类对多部分表单数据进行编码和解码。您在启动期间为内容类型注册该编解码器:

CodecRegistry.add(ContentType("multipart/mixed"), MultipartCodec())

有关编解码器的示例实现,请参见源代码中的application/x-www-form-urlencoded

关于dart - 使用Aqueduct 3.0处理分段上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691206/

相关文章:

android - flutter - 使用抽屉子部件 onTap 更改子部件

string - 错误 'A value of type ' dynamic' 无法分配给 'String' 类型的变量。在 Dart 2.2

oauth - 无法理解 Aqueduct 自动生成的数据库和身份验证

dart - RangeError : Invalid value: Not in range 0. .1114111,包括:-1 尝试使用升级命令时

dart - Flutter - ListTile 的循环

dart - flutter : Get Local position of Gesture Detector

firebase - 900个字符的Firebase Auth idToken大小正常吗?

flutter - 如何从BLE制造商数据波动中获得所需值

dart - 如何为 Aqueduct 服务器上的用户注销(即撤销、删除或使 token 无效)?

dart - 如何将上传的多部分文件写入磁盘?