File upload 如何在Dart中上载文件?
我试图找到任何使用Dart脚本上传文件的示例File upload 如何在Dart中上载文件?,file-upload,dart,File Upload,Dart,我试图找到任何使用Dart脚本上传文件的示例 我理解在文件输入字段中被选中后在客户端读取的部分,但如何将其发布到服务器并保存为文件?在多部分编码解析器可用之前,您可以在客户端上使用以读取和上载文件内容。此API在浏览器中有很好的支持(请参阅) 在客户端: 导入'dart:html'; main(){ InputElement uploadInput=查询('#upload'); uploadInput.onChange.listen((e){ //将文件内容读取为dataURL 最终文件=upl
我理解在文件输入字段中被选中后在客户端读取的部分,但如何将其发布到服务器并保存为文件?在多部分编码解析器可用之前,您可以在客户端上使用以读取和上载文件内容。此API在浏览器中有很好的支持(请参阅) 在客户端:
导入'dart:html';
main(){
InputElement uploadInput=查询('#upload');
uploadInput.onChange.listen((e){
//将文件内容读取为dataURL
最终文件=uploadInput.files;
如果(files.length==1){
最终文件=文件[0];
最终读取器=新文件读取器();
reader.onLoad.listen((e){
sendDatas(reader.result);
});
reader.readAsDataUrl(文件);
}
});
}
///向服务器发送数据
sendDatas(动态数据){
最终请求=新的HttpRequest();
请求onReadyStateChange.listen((事件e){
如果(req.readyState==HttpRequest.DONE&&
(请求状态==200 | |请求状态==0)){
窗口警报(“上传完成”);
}
});
请求打开(“POST”http://127.0.0.1:8080/upload");
请求发送(数据);
}
在服务器端:
导入'dart:io';
main(){
最终服务器=新的HttpServer();
监听服务器('127.0.0.1',8080);
server.addRequestHandler((请求)=>request.path='/upload'
&&request.method.toLowerCase()=“post”
,(HttpRequest请求,HttpResponse响应){
_readBody(请求,(正文){
//处理您的数据URL
//图像示例:数据:image/jpeg;base64,/9j/4S2YRXhpZgAATU0AK。。。
//返回结果
response.statusCode=HttpStatus.CREATED;
response.contentLength=0;
response.outputStream.close();
});
});
}
///阅读[请求]正文,完成后调用[把手]。
_readBody(HttpRequest请求,无效把手体(字符串体)){
String bodyString=”“;//请求正文字节数据
最终完成者=新完成者();
最终sis=新的StringInputStream(request.inputStream,Encoding.UTF_8);
sis.onData=(){
bodyString=bodyString.concat(sis.read());
};
sis.onClosed=(){
完成符。完成(“”);
};
sis.onError=(例外情况e){
打印('exeption ocursed:${e.toString()}');
};
//处理请求并发送响应
完成者。未来。然后((){
车把体(腰线);
});
}
参考资料:
reader.readAsText(文件)
或reader.readAsBinaryString(文件)
而不是reader.readAsDataURL(文件)
。感谢您的帮助Alexandre,我在服务器端为datauri和base64开发了自己的解码器,它工作得很好,我会尝试在某个时候共享它。这仍然是一条路吗?复制并粘贴了代码,但看起来类无法导入