Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

CacheManager attempts to create file named guid.* on Windows (full example included and clear description)

Offen
#435 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
dart, flutter
Bereich
desktop

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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Baseflow/flutter_cache_manager

Alle Issues in Baseflow/flutter_cache_manager

Ähnliche Issues

Weitere Issues zu Dart

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.