博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dart 服务端开发 文件上传
阅读量:5883 次
发布时间:2019-06-19

本文共 2577 字,大约阅读时间需要 8 分钟。

hot3.png

clent端使用angular组件

upload_component.html

form id="myForm" method="POST" enctype="multipart/form-data">     
{
{progress}}

upload_component.dart

import 'package:angular/angular.dart';import 'package:angular_forms/angular_forms.dart';import "dart:html";@Component(  selector: 'upload',  templateUrl: 'upload_component.html',  styleUrls: const ['upload_component.css'],  directives: const [CORE_DIRECTIVES,formDirectives],)class UploadComponent{ //表示文件上传进度  String progress;  void upload(){     // formDate 表示用于存储html文件表单字段的对象       var formData = new FormData(querySelector("#myForm"));   final request = new HttpRequest();  //使用post方法   request.open('POST', 'http://localhost:8080/upload');   //监听文件上传进度   request.upload.onProgress.listen((ProgressEvent e) {     progress = (e.loaded*100/e.total).toInt().toString() + '%';   });   //监听文件上传完成时调用   request.onLoad.listen((e) {     print('Uploaded'+request.response);   });      request.send(formData);  }}

server端

import 'dart:io';import 'package:mime/mime.dart';import 'package:shelf/shelf.dart';import 'package:shelf/shelf_io.dart' as io;import 'package:shelf_cors/shelf_cors.dart';import 'package:shelf_rest/shelf_rest.dart';void main() {  var rootRouter = router()..post('/upload',(Request request) async{  print(request.headers);  var header = HeaderValue.parse(request.headers['content-type']);  await for(MimeMultipart part in request.read().transform(new MimeMultipartTransformer(header.parameters['boundary']))) {  if(part.headers.containsKey('content-disposition')) {  header = HeaderValue.parse(part.headers['content-disposition']);  String filename = header.parameters['filename'];  final file = new File(filename);  IOSink fileSink = file.openWrite();  await part.pipe(fileSink);  fileSink.close();  }  }  return new Response.ok("Success",headers:{'Access-Control-Allow-Origin':'*'});  });    //通过此中间件设置跨域标头信息  final cors = createCorsHeadersMiddleware(      corsHeaders: {        'Access-Control-Allow-Origin': '*',        'Access-Control-Expose-Headers': 'Authorization, Content-Type',        'Access-Control-Allow-Headers': 'Authorization, Origin, X-Requested-With, Content-Type, Accept',        'Access-Control-Allow-Methods': 'GET, POST, PUT, PATCH, DELETE'      }  );  var handler = const Pipeline()      .addMiddleware(logRequests())      .addMiddleware(cors)        .addHandler(rootRouter.handler);  printRoutes(rootRouter);  io.serve(handler, 'localhost', 8080).then((server) {    print('Serving at http://${server.address.host}:${server.port}');  });}

 

转载于:https://my.oschina.net/u/3647851/blog/1860316

你可能感兴趣的文章
HTML 字符实体
查看>>
质数因子
查看>>
在NVIDIA Quadro NVS 295 显卡上装redhat 黑屏 无信号输入
查看>>
Announcing the new Office 365 admin center
查看>>
小白经营网站的前前后后
查看>>
Spring MVC 教程,快速入门,深入分析——如何实现全局的异常处理
查看>>
单用户模式修改密码
查看>>
微信小程序帮你赚到第一桶金
查看>>
mac下安卓开发环境搭建
查看>>
学习之华丽的注册按钮➕倒计时
查看>>
Vim 中使用 OmniComplete 为 C/C++ 自动补全(部分增加)
查看>>
初识Hadoop
查看>>
Oracle之内存结构(SGA、PGA)
查看>>
Binary Search Tree IN C
查看>>
jquery之trigger()
查看>>
Spring源码浅析之事务(四)
查看>>
我的友情链接
查看>>
[APM] 2个实例+5个维度解读APM技术
查看>>
Jndi配置数据源
查看>>
华为交换机端口链路类型简析——access、trunk、hybrid
查看>>