使用 Aqueduct 3.0 处理分段上传
Handling multipart uploads with Aqueduct 3.0
我在客户端使用 AngularDart,在 API/Server 端使用 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
子类(来自标准库 dart:convert
)来扩展框架以在您的项目中执行的操作。您在启动期间为内容类型注册该编解码器:
CodecRegistry.add(ContentType("multipart/mixed"), MultipartCodec())
有关编解码器的示例实现,请参阅源代码中的 application/x-www-form-urlencoded。
我在客户端使用 AngularDart,在 API/Server 端使用 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
子类(来自标准库 dart:convert
)来扩展框架以在您的项目中执行的操作。您在启动期间为内容类型注册该编解码器:
CodecRegistry.add(ContentType("multipart/mixed"), MultipartCodec())
有关编解码器的示例实现,请参阅源代码中的 application/x-www-form-urlencoded。