Dart 语言 文件上传与下载示例

Dart阿木 发布于 2025-06-19 6 次阅读


Dart 语言文件上传与下载示例

在当今的互联网时代,文件的上传与下载是网络应用中非常常见的功能。Dart 语言作为一种现代化的编程语言,广泛应用于Flutter应用开发中。本文将围绕Dart语言,提供一个文件上传与下载的示例,并对其技术细节进行解析。

文件上传

文件上传是用户将文件从本地传输到服务器的过程。在Dart中,我们可以使用`http`包来实现文件上传的功能。

1. 准备工作

确保你的Dart项目中已经包含了`http`包。如果没有,可以通过以下命令安装:

dart

flutter pub add http


2. 创建上传接口

在服务器端,你需要创建一个接口来接收上传的文件。以下是一个简单的Node.js服务器端示例:

javascript

const express = require('express');


const multer = require('multer');


const app = express();

const storage = multer.diskStorage({


destination: function (req, file, cb) {


cb(null, 'uploads/');


},


filename: function (req, file, cb) {


cb(null, file.originalname);


}


});

const upload = multer({ storage: storage });

app.post('/upload', upload.single('file'), (req, res) => {


res.send('File uploaded successfully');


});

app.listen(3000, () => {


console.log('Server is running on port 3000');


});


3. Dart客户端实现

在Dart客户端,你可以使用`http.MultipartRequest`来发送文件:

dart

import 'dart:io';


import 'package:http/http.dart' as http;

Future<void> main() async {


final file = File('path/to/your/file.txt');


final request = http.MultipartRequest('POST', Uri.parse('http://localhost:3000/upload'));


request.files.add(


http.MultipartFile.fromBytes(


'file',


await file.readAsBytes(),


filename: file.path.split('/').last,


),


);

final response = await request.send();

if (response.statusCode == 200) {


print('File uploaded successfully');


} else {


print('Failed to upload file');


}


}


文件下载

文件下载是用户从服务器获取文件的过程。在Dart中,我们可以使用`http`包来实现文件下载的功能。

1. Dart客户端实现

以下是一个简单的Dart客户端示例,用于下载文件:

dart

import 'dart:io';


import 'package:http/http.dart' as http;

Future<void> main() async {


final url = 'http://example.com/path/to/your/file.txt';


final response = await http.get(Uri.parse(url));

if (response.statusCode == 200) {


final file = File('path/to/save/your/file.txt');


await file.writeAsBytes(response.bodyBytes);


print('File downloaded successfully');


} else {


print('Failed to download file');


}


}


2. 服务器端支持

在服务器端,你需要确保文件可以被访问。以下是一个简单的Node.js服务器端示例:

javascript

const express = require('express');


const app = express();

app.get('/path/to/your/file.txt', (req, res) => {


res.sendFile(__dirname + '/path/to/your/file.txt');


});

app.listen(3000, () => {


console.log('Server is running on port 3000');


});


总结

本文通过Dart语言,展示了文件上传与下载的基本实现。在实际应用中,你可能需要考虑更多的细节,例如错误处理、文件类型验证、大文件上传等。希望本文能为你提供一些参考和启发。

扩展阅读

- [Dart HTTP 官方文档](https://api.dartlang.org/stable/2.10.4/dart-io/http-library.html)

- [Node.js Multer 文件上传中间件](https://www.npmjs.com/package/multer)

- [Node.js Express 框架](https://expressjs.com/)