Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ethan
/
appframe
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit 4b6090c3
authored
2025-12-11 14:47:32 +0800
by
tanghuan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
下载保存文件接口,让用户选择保存路径
1 parent
550a8915
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
9 deletions
lib/data/repositories/message/save_file_to_disk_handler.dart
lib/data/repositories/message/save_file_to_disk_handler.dart
View file @
4b6090c
...
@@ -4,6 +4,7 @@ import 'package:appframe/services/dispatcher.dart';
...
@@ -4,6 +4,7 @@ import 'package:appframe/services/dispatcher.dart';
import
'package:dio/dio.dart'
;
import
'package:dio/dio.dart'
;
import
'package:file_picker/file_picker.dart'
;
import
'package:file_picker/file_picker.dart'
;
import
'package:path/path.dart'
as
path
;
import
'package:path/path.dart'
as
path
;
import
'package:path_provider/path_provider.dart'
;
class
SaveFileToDisKHandler
extends
MessageHandler
{
class
SaveFileToDisKHandler
extends
MessageHandler
{
@override
@override
...
@@ -17,17 +18,25 @@ class SaveFileToDisKHandler extends MessageHandler {
...
@@ -17,17 +18,25 @@ class SaveFileToDisKHandler extends MessageHandler {
throw
Exception
(
'参数错误'
);
throw
Exception
(
'参数错误'
);
}
}
// 让用户选择保存目录
var
fileName
=
params
[
'fileName'
]
as
String
?
??
''
;
String
?
selectedDirectory
=
await
FilePicker
.
platform
.
getDirectoryPath
();
// 获取filePath中的文件名,以及后缀名
// 临时目录
var
fileName
=
path
.
basenameWithoutExtension
(
filePath
);
var
dir
=
await
getTemporaryDirectory
();
var
ext
=
path
.
extension
(
filePath
);
// 要保存的文件名和扩展名
String
saveFileName
,
ext
;
if
(
fileName
.
isEmpty
)
{
saveFileName
=
path
.
basenameWithoutExtension
(
filePath
);
ext
=
path
.
extension
(
filePath
);
}
else
{
saveFileName
=
path
.
basenameWithoutExtension
(
fileName
);
ext
=
path
.
extension
(
fileName
);
}
// 要保存的路径
// 要保存的路径
var
targetPath
=
path
.
join
(
selectedDirectory
!,
'
$f
ileName
.
$ext
'
);
var
targetPath
=
path
.
join
(
dir
.
path
,
'
$saveF
ileName
.
$ext
'
);
// 如果文件存在,则在文件名后添加数字
// 如果文件存在,则在文件名后添加数字
int
i
=
1
;
int
i
=
1
;
while
(
File
(
targetPath
).
existsSync
())
{
while
(
File
(
targetPath
).
existsSync
())
{
targetPath
=
path
.
join
(
selectedDirectory
,
'
$f
ileName
(
$i
).
$ext
'
);
targetPath
=
path
.
join
(
dir
.
path
,
'
$saveF
ileName
(
$i
).
$ext
'
);
i
++;
i
++;
}
}
...
@@ -36,11 +45,14 @@ class SaveFileToDisKHandler extends MessageHandler {
...
@@ -36,11 +45,14 @@ class SaveFileToDisKHandler extends MessageHandler {
if
(
resp
.
statusCode
!=
200
)
{
if
(
resp
.
statusCode
!=
200
)
{
throw
Exception
(
'文件下载失败'
);
throw
Exception
(
'文件下载失败'
);
}
}
await
FilePicker
.
platform
.
saveFile
(
bytes:
File
(
targetPath
).
readAsBytesSync
(),
fileName:
fileName
);
return
true
;
return
true
;
}
else
{
}
else
{
// 将filePath路径的文件保存到targetPath
var
f
=
File
(
filePath
);
final
f
=
await
File
(
filePath
).
copy
(
targetPath
);
if
(
f
.
existsSync
())
{
if
(
f
.
existsSync
())
{
await
FilePicker
.
platform
.
saveFile
(
bytes:
f
.
readAsBytesSync
(),
fileName:
fileName
);
return
true
;
return
true
;
}
else
{
}
else
{
return
false
;
return
false
;
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment