CacheManager attempts to create file named guid.* on Windows (full example included and clear description)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 38/100
Línea de trabajo
La lógica sospechada está en lib/src/web/file_service.dart, alrededor de la línea 115; empieza ejecutando la reproducción mínima proporcionada en Windows y siguiendo cómo el encabezado content-type se convierte en la extensión del nombre de archivo de la caché. Se considera terminado cuando las descargas cuyos encabezados no proporcionan una extensión utilizable crean un nombre de archivo válido en Windows, mientras que las extensiones normales siguen funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🐛 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;
}
- Lenguaje dominante
- Dart
- Estrellas
- 810
- Forks
- 510
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 11
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Baseflow/flutter_cache_manager
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Baseflow/flutter_cache_manager#450 · 9 comentarios · 8 reacciones ·
-
Retaining original file names Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
Baseflow/flutter_cache_manager#507 · 1 comentario ·
-
sqflite_android update Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
Baseflow/flutter_cache_manager#501 · 1 comentario · 3 reacciones ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Baseflow/flutter_cache_manager#500 · 1 comentario · 3 reacciones ·
Todos los issues de Baseflow/flutter_cache_manager
Issues similares
-
[Bug]: New version of nm package Abiertobug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
fluttercommunity/plus_plugins#3979 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
flutter-webrtc/flutter-webrtc#2206 ·
-
from.page-issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
enhancement UI: Material
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Notsfsssf/pixez-flutter#1360 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100