download static method
파일 저장
저장 전 저장소 접근 권한을 얻어야 함
Implementation
static Future<File> download({
required FileModel file,
required String downloadPath,
}) async {
var url = ApiPath.loadFile.addGetParam({"fileKey": file.fileKey});
var request = await get(url);
var savedFile = File(
"$downloadPath${Util.pathSeparator}${file.fileKey}_${file.originFileNm ?? file.fileNm}",
);
if (Util.isWeb) {
var a = html.AnchorElement(href: url.toString());
a.download = 'true';
a.click();
a.remove();
} else {
// 저장 경로까지 폴더를 생성
await Directory(downloadPath).create(recursive: true);
if (await savedFile.exists()) {
var i = 1;
// 파일 이름이 중복일 경우 체크
while (await savedFile.exists()) {
var match = RegExp(r"\((\d+)\).\w+$").allMatches(savedFile.path);
if (match.isEmpty) {
savedFile = File(
savedFile.path
.replaceFirst(".${file.fileExt}", " ($i).${file.fileExt}"),
);
} else {
savedFile = File(
savedFile.path.replaceFirst(
" ($i).${file.fileExt}", " (${i + 1}).${file.fileExt}"),
);
i++;
}
}
}
await savedFile.writeAsBytes(request.bodyBytes);
}
return savedFile;
}