CacheManager attempts to create file named guid.* on Windows (full example included and clear description)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 38/100
Rechercherichtung
Die vermutete Logik befindet sich in lib/src/web/file_service.dart um Zeile 115; führe zunächst die bereitgestellte minimale Reproduktion unter Windows aus und verfolge nach, wie der content-type-Header zur Dateinamenerweiterung des Cache-Dateinamens wird. Als abgeschlossen gilt die Änderung, wenn Downloads, deren Header keine verwendbare Erweiterung liefern, einen unter Windows gültigen Dateinamen erzeugen, während normale Erweiterungen weiterhin funktionieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
🐛 Bug Report
While downloading an image from a webserver the cache manager decides to create a filename ending with .* which is not permitted on windows.
Expected behavior
Create a filename without extension or a generic extension like .cache or .file since the cache manager cannot determine it from the webserver headers.
Reproduction steps
i have made minimal reproducible example no external dependencies needed (other than http package)
i am aware that the server should provide correct descriptive headers for the content being served but sometimes it happens not to in some scenarios.
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:http/http.dart' as http;
import 'package:http/testing.dart';
Future<void> main() async {
final client = MockClient((http.Request request) async =>
http.Response("a png image", 200, headers: {
"content-type": "application/*",
"content-disposition":
"attachment; filename=file; filename*=UTF-8''file"
}));
final cmgr = CacheManager(Config(DefaultCacheManager.key,
fileService: HttpFileService(httpClient: client)));
/* crashes with
Launching lib\main.dart on Windows in debug mode...
√ Built build\windows\runner\Debug\cache_mgr_test.exe.
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: FileSystemException: Cannot open file, path = 'C:\Users\csman\AppData\Local\Temp\libCachedImageData\cf09f070-6cef-1d8a-b096-2334712b3134.*' (OS Error: The filename, directory name, or volume label syntax is incorrect.
, errno = 123)
#0 _checkForErrorResponse (dart:io/common.dart:55:9)
#1 _File.open.<anonymous closure> (dart:io/file_impl.dart:381:7)
<asynchronous suspension>
*/
await cmgr.downloadFile("http://myaddress.com/imageManager?pngfileid=1234");
}
/*
pubspec.yaml
name: cache_mgr_test
description: A new Flutter project.
publish_to: "none"
version: 1.0.0+1
environment:
sdk: ">=3.1.5 <4.0.0"
dependencies:
cupertino_icons: ^1.0.2
flutter:
sdk: flutter
flutter_cache_manager: ^3.3.1
http: ^1.1.0
dev_dependencies:
flutter_lints: ^2.0.0
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
*/
Configuration
Version: 3.3.1
Platform:
Windows 10
I think the problematic part is in \flutter_cache_manager-3.3.1\lib\src\web\file_service.dart line 115 around
@override
String get fileExtension {
var fileExtension = '';
final contentTypeHeader = _header(HttpHeaders.contentTypeHeader);
if (contentTypeHeader != null) {
final contentType = ContentType.parse(contentTypeHeader);
fileExtension = contentType.fileExtension;
}
return fileExtension;
}
- Vorherrschende Sprache
- Dart
- Sterne
- 810
- Forks
- 510
- Ø Merge
- 28 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Baseflow/flutter_cache_manager
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Baseflow/flutter_cache_manager#450 · 9 Kommentare · 8 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
Baseflow/flutter_cache_manager#508 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 48/100
Baseflow/flutter_cache_manager#507 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
sqflite_android updateOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 30/100
Baseflow/flutter_cache_manager#501 · 1 Kommentar · 3 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
Baseflow/flutter_cache_manager#500 · 1 Kommentar · 3 Reaktionen ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in Baseflow/flutter_cache_manager
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
googleapis/google-cloud-dart#366 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug controls
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
from.page-issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
team-tool tool
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
flutter/flutter#193423 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
ai-driven-qa bug claude
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
linagora/tmail-flutter#4898 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag