[BUG] "Download Error" when attempting to download a photo to iOS #1064

Closed
opened 2026-02-20 00:02:01 -05:00 by deekerman · 10 comments
Owner

Originally created by @ameyp on GitHub (Jul 7, 2023).

The bug

I have photos that I uploaded to Immich from my Android phone. On my iPad, when I view one and click on the Download icon, I instead get a red message at the bottom saying "Download Error". Downloading works if I do it from Safari.

The OS that Immich Server is running on

Ubuntu 22.04

Version of Immich Server

v1.66.1

Version of Immich Mobile App

1.63.0 build.103

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

This is deployed on Kubernetes, but the setup is virtually identical to the sample docker-compose.yml in the repo.

Your .env content

NODE_ENV=production
TYPESENSE_ENABLED=false
IMMICH_MACHINE_LEARNING_URL=false

Other values are database and redis-related.



### Reproduction steps

```bash
1. Upload a photo from Android
2. Open the photo on iOS
3. Attempt to download the photo

Additional information

There's nothing useful in the app's logs either, I see a bunch of errors with no Message or Stack Traces and FROM ImmichErrorLogger

Originally created by @ameyp on GitHub (Jul 7, 2023). ### The bug I have photos that I uploaded to Immich from my Android phone. On my iPad, when I view one and click on the Download icon, I instead get a red message at the bottom saying "Download Error". Downloading works if I do it from Safari. ### The OS that Immich Server is running on Ubuntu 22.04 ### Version of Immich Server v1.66.1 ### Version of Immich Mobile App 1.63.0 build.103 ### Platform with the issue - [ ] Server - [ ] Web - [X] Mobile ### Your docker-compose.yml content ```YAML This is deployed on Kubernetes, but the setup is virtually identical to the sample docker-compose.yml in the repo. ``` ### Your .env content ```Shell NODE_ENV=production TYPESENSE_ENABLED=false IMMICH_MACHINE_LEARNING_URL=false ``` Other values are database and redis-related. ``` ### Reproduction steps ```bash 1. Upload a photo from Android 2. Open the photo on iOS 3. Attempt to download the photo ``` ### Additional information There's nothing useful in the app's logs either, I see a bunch of errors with no `Message` or `Stack Traces` and FROM `ImmichErrorLogger`
Author
Owner

@alextran1502 commented on GitHub (Jul 7, 2023):

Can you update the app on iPad and try downloading again?

@alextran1502 commented on GitHub (Jul 7, 2023): Can you update the app on iPad and try downloading again?
Author
Owner

@ameyp commented on GitHub (Jul 7, 2023):

Ah, that fixed it, sorry!

@ameyp commented on GitHub (Jul 7, 2023): Ah, that fixed it, sorry!
Author
Owner

@AndyXheli commented on GitHub (Nov 10, 2023):

Hello, I'm having this issue my iPhone works but my iPad does not and I shared some albums with my wife and she's also not able to download on iPhone. Any ideas :)

@AndyXheli commented on GitHub (Nov 10, 2023): Hello, I'm having this issue my iPhone works but my iPad does not and I shared some albums with my wife and she's also not able to download on iPhone. Any ideas :)
Author
Owner

@almogtzabari commented on GitHub (Apr 21, 2024):

Hi,
I also use iPhone and get this "Download Error" when I try to download some files (some files are downloaded fine).

Looking at the logs of the iOS app I see this (might not be relevant, but I'll add it here anyway):
image
image
image

@almogtzabari commented on GitHub (Apr 21, 2024): Hi, I also use iPhone and get this "Download Error" when I try to download some files (some files are downloaded fine). Looking at the logs of the iOS app I see this (might not be relevant, but I'll add it here anyway): ![image](https://github.com/immich-app/immich/assets/37792505/ecb37158-24e9-412b-8b16-c2ae074384f4) ![image](https://github.com/immich-app/immich/assets/37792505/3751ced1-098c-43bd-a240-ffcbcf2fe602) ![image](https://github.com/immich-app/immich/assets/37792505/99632c37-e45b-4caa-a129-a2874b20c9e9)
Author
Owner

@maxdd commented on GitHub (May 5, 2024):

I'm having the same issue on Android.
Currently hosting over docker and cannot download anything.
The video/image im trying to download is working fine via web ui though
Thumbnail is also not showing with an exclamation mark over it

i've noticed there is an issue with the used UUID, for whatever reason the app is using a wrong uuid when looking for the thumbnail or the video itself

the proper url (which i've also verified manually should be)

http://192.168.1.52:2283/api/asset/thumbnail/c66f028c-cc71-48ae-acb5-102ab2310645?format=WEBP

but the app looks for

Exception: HttpException: Invalid statusCode: 400, uri = http://192.168.1.52:2283/api/asset/thumbnail/74f261c2-f526-4dc3-951e-094d2f3d36b8?format=WEBP
Library: image resource service
Context: resolving an image codec

had to clean cache and data on the app, apparently now it is working

@maxdd commented on GitHub (May 5, 2024): I'm having the same issue on Android. Currently hosting over docker and cannot download anything. The video/image im trying to download is working fine via web ui though Thumbnail is also not showing with an exclamation mark over it i've noticed there is an issue with the used UUID, for whatever reason the app is using a wrong uuid when looking for the thumbnail or the video itself the proper url (which i've also verified manually should be) `http://192.168.1.52:2283/api/asset/thumbnail/c66f028c-cc71-48ae-acb5-102ab2310645?format=WEBP` but the app looks for ``` Exception: HttpException: Invalid statusCode: 400, uri = http://192.168.1.52:2283/api/asset/thumbnail/74f261c2-f526-4dc3-951e-094d2f3d36b8?format=WEBP Library: image resource service Context: resolving an image codec ``` had to clean cache and data on the app, apparently now it is working
Author
Owner

@samluxh commented on GitHub (Sep 28, 2024):

I have the same bug on current iOS Version and Immich Version. It does download photos but still says Download Error, but Videos are not downloading.

@samluxh commented on GitHub (Sep 28, 2024): I have the same bug on current iOS Version and Immich Version. It does download photos but still says Download Error, but Videos are not downloading.
Author
Owner

@alextran1502 commented on GitHub (Sep 28, 2024):

@samluxh do you know if the video is uploaded from an iOS device, or from other devices?

@alextran1502 commented on GitHub (Sep 28, 2024): @samluxh do you know if the video is uploaded from an iOS device, or from other devices?
Author
Owner

@samluxh commented on GitHub (Sep 28, 2024):

@alextran1502 Every photo/video is on "external library" and read only,no uploaded images/videos over immich. Maybe the read only setting in docker disturbs here?

@samluxh commented on GitHub (Sep 28, 2024): @alextran1502 Every photo/video is on "external library" and read only,no uploaded images/videos over immich. Maybe the read only setting in docker disturbs here?
Author
Owner

@alextran1502 commented on GitHub (Sep 28, 2024):

@samluxh can you the app log after the download failed to run?

@alextran1502 commented on GitHub (Sep 28, 2024): @samluxh can you the app log after the download failed to run?
Author
Owner

@samluxh commented on GitHub (Sep 28, 2024):

@alextran1502

I have to revise my statement, since the update to iOS 18, the photos app have been completely redesigned, I didn't see newly saved photos in the overview straight away and had to search for them. Photos and videos are saved without a problem via the app but with the message "Download Error" at the end. There is no error message when downloading via Safari on iOS. There are not many error logs in the Immich app, the most recent one after a download is:

Message:
FlutterError - Catch all

Details:
Instance of 'FlutterErrorDetails'
Exception: PlatformException(VideoError, Failed to load video: Ressource nicht verfügbar, null, null)
Library: widgets library
Context: Instance of 'ErrorDescription'

From:
ImmichErrorLogger

Stack trace:
#1 AsyncError.value (package:riverpod/src/common.dart:494:0)
#2 VideoViewerPage.build (package:immich_mobile/pages/common/video_viewer.page.dart:36:0)
#3 _ConsumerState.build (package:flutter_riverpod/src/consumer.dart:476:0)
#4 StatefulElement.build (package:flutter/src/widgets/framework.dart:5729:0)
#5 ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539:0)
#6 HookElement.build (package:flutter_hooks/src/framework.dart:438:0)
#7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617:0)
#8 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:0)
#9 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:0)
#10 BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2693:0)
#11 BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2752:0)
#12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3048:0)
#13 _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231:0)
#14 RenderObject.invokeLayoutCallback. (package:flutter/src/rendering/object.dart:2719:0)
#15 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098:0)
#16 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719:0)
#17 RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278:0)
#18 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369:0)
#19 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446:0)
#20 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052:0)
#21 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065:0)
#22 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602:0)
#23 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164:0)
#24 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468:0)
#25 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397:0)
#26 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318:0)
#27 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176:0)
#28 _invoke (dart:ui/hooks.dart:312:0)
#29 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:0)
#30 _drawFrame (dart:ui/hooks.dart:283:0)

@samluxh commented on GitHub (Sep 28, 2024): @alextran1502 I have to revise my statement, since the update to iOS 18, the photos app have been completely redesigned, I didn't see newly saved photos in the overview straight away and had to search for them. Photos and videos are saved without a problem via the app but with the message "Download Error" at the end. There is no error message when downloading via Safari on iOS. There are not many error logs in the Immich app, the most recent one after a download is: Message: FlutterError - Catch all Details: Instance of 'FlutterErrorDetails' Exception: PlatformException(VideoError, Failed to load video: Ressource nicht verfügbar, null, null) Library: widgets library Context: Instance of 'ErrorDescription' From: ImmichErrorLogger Stack trace: #1 AsyncError.value (package:riverpod/src/common.dart:494:0) #2 VideoViewerPage.build (package:immich_mobile/pages/common/video_viewer.page.dart:36:0) #3 _ConsumerState.build (package:flutter_riverpod/src/consumer.dart:476:0) #4 StatefulElement.build (package:flutter/src/widgets/framework.dart:5729:0) #5 ConsumerStatefulElement.build (package:flutter_riverpod/src/consumer.dart:539:0) #6 HookElement.build (package:flutter_hooks/src/framework.dart:438:0) #7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5617:0) #8 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5780:0) #9 Element.rebuild (package:flutter/src/widgets/framework.dart:5333:0) #10 BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2693:0) #11 BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2752:0) #12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3048:0) #13 _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:231:0) #14 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2719:0) #15 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1098:0) #16 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2719:0) #17 RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:278:0) #18 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:369:0) #19 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2446:0) #20 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1052:0) #21 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1065:0) #22 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:602:0) #23 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1164:0) #24 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:468:0) #25 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1397:0) #26 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1318:0) #27 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1176:0) #28 _invoke (dart:ui/hooks.dart:312:0) #29 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:419:0) #30 _drawFrame (dart:ui/hooks.dart:283:0)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/immich#1064
No description provided.