[BUG] Inconsistent filename during upload #876

Closed
opened 2026-02-04 23:14:48 +03:00 by OVERLORD · 0 comments
Owner

Originally created by @AndreAle94 on GitHub (May 23, 2023).

The bug

The original name of uploaded files is altered when it contains sub-extensions and the behavior is inconsistent between mobile and web clients.

For example, I tried uploading a motion photo with the following name: PXL_20221217_204631955.MP.jpg

Observed behavior

  1. Mobile client (Android):
  • filename on server storage: PXL_20221217_204631955.jpg [x]
  • filename on UI: PXL_20221217_204631955.jpg [x]

Mobile

  1. Web client (Firefox)
  • filename on server storage: PXL_20221217_204631955.MP.jpg [✓]
  • filename on UI: PXL_20221217_204631955.MP.MP [x]

Web

Expected behavior

  • filename on server storage: PXL_20221217_204631955.MP.jpg
  • filename on UI: PXL_20221217_204631955.MP.jpg

The OS that Immich Server is running on

Debian

Version of Immich Server

v1.57.1

Version of Immich Mobile App

v1.57.0

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:release
    entrypoint: ["/bin/sh", "./start-server.sh"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    networks:
      - internal_network
      - nginx_network
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:release
    entrypoint: ["/bin/sh", "./start-microservices.sh"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    networks:
      - internal_network
    depends_on:
      - redis
      - database
      - typesense
    restart: always

#  immich-machine-learning:
#    container_name: immich_machine_learning
#    image: ghcr.io/immich-app/immich-machine-learning:release
#    volumes:
#      - ${UPLOAD_LOCATION}:/usr/src/app/upload
#      - model-cache:/cache
#    env_file:
#      - .env
#    networks:
#      - internal_network
#    restart: always

  immich-web:
    container_name: immich_web
    image: ghcr.io/immich-app/immich-web:release
    entrypoint: ["/bin/sh", "./entrypoint.sh"]
    env_file:
      - .env
    networks:
      - internal_network
      - nginx_network
    restart: always

  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.0
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
    logging:
      driver: none
    volumes:
      - tsdata:/data
    networks:
      - internal_network
    restart: always

  redis:
    container_name: immich_redis
    image: redis:6.2
    networks:
      - internal_network
    restart: always

  database:
    container_name: immich_postgres
    image: postgres:14
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - internal_network
    restart: always

#  immich-proxy:
#    container_name: immich_proxy
#    image: ghcr.io/immich-app/immich-proxy:release
#    environment:
#      # Make sure these values get passed through from the env file
#      - IMMICH_SERVER_URL
#      - IMMICH_WEB_URL
#    ports:
#      - 2283:8080
#    logging:
#      driver: none
#    depends_on:
#      - immich-server
#    restart: always

networks:
  internal_network:
  nginx_network:

volumes:
  pgdata:
  model-cache:
  tsdata:

Your .env content

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=<removed>
DB_DATABASE_NAME=immich
REDIS_HOSTNAME=immich_redis
UPLOAD_LOCATION=/data/immich
TYPESENSE_API_KEY=<removed>
PUBLIC_LOGIN_PAGE_MESSAGE=
IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001

Reproduction steps

1. Upload a file with one or more sub-extension with mobile client
2. Upload a file with one or more sub-extension with web client
3. Check the name of the files on server storage and on media detail panel

Additional information

No response

Originally created by @AndreAle94 on GitHub (May 23, 2023). ### The bug The original name of uploaded files is altered when it contains sub-extensions and the behavior is inconsistent between mobile and web clients. For example, I tried uploading a motion photo with the following name: `PXL_20221217_204631955.MP.jpg` **Observed behavior** 1. Mobile client (Android): - filename on server storage: `PXL_20221217_204631955.jpg` [x] - filename on UI: `PXL_20221217_204631955.jpg` [x] ![Mobile](https://github.com/immich-app/immich/assets/15969021/237b797f-6471-46e2-99fd-c9c818425ff7) 2. Web client (Firefox) - filename on server storage: `PXL_20221217_204631955.MP.jpg` [✓] - filename on UI: `PXL_20221217_204631955.MP.MP` [x] ![Web](https://github.com/immich-app/immich/assets/15969021/73ee02fa-050a-452a-9a53-cc1a7c8adfed) **Expected behavior** - filename on server storage: `PXL_20221217_204631955.MP.jpg` - filename on UI: `PXL_20221217_204631955.MP.jpg` ### The OS that Immich Server is running on Debian ### Version of Immich Server v1.57.1 ### Version of Immich Mobile App v1.57.0 ### Platform with the issue - [ ] Server - [X] Web - [X] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:release entrypoint: ["/bin/sh", "./start-server.sh"] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env networks: - internal_network - nginx_network depends_on: - redis - database - typesense restart: always immich-microservices: container_name: immich_microservices image: ghcr.io/immich-app/immich-server:release entrypoint: ["/bin/sh", "./start-microservices.sh"] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env networks: - internal_network depends_on: - redis - database - typesense restart: always # immich-machine-learning: # container_name: immich_machine_learning # image: ghcr.io/immich-app/immich-machine-learning:release # volumes: # - ${UPLOAD_LOCATION}:/usr/src/app/upload # - model-cache:/cache # env_file: # - .env # networks: # - internal_network # restart: always immich-web: container_name: immich_web image: ghcr.io/immich-app/immich-web:release entrypoint: ["/bin/sh", "./entrypoint.sh"] env_file: - .env networks: - internal_network - nginx_network restart: always typesense: container_name: immich_typesense image: typesense/typesense:0.24.0 environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data logging: driver: none volumes: - tsdata:/data networks: - internal_network restart: always redis: container_name: immich_redis image: redis:6.2 networks: - internal_network restart: always database: container_name: immich_postgres image: postgres:14 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data volumes: - pgdata:/var/lib/postgresql/data networks: - internal_network restart: always # immich-proxy: # container_name: immich_proxy # image: ghcr.io/immich-app/immich-proxy:release # environment: # # Make sure these values get passed through from the env file # - IMMICH_SERVER_URL # - IMMICH_WEB_URL # ports: # - 2283:8080 # logging: # driver: none # depends_on: # - immich-server # restart: always networks: internal_network: nginx_network: volumes: pgdata: model-cache: tsdata: ``` ### Your .env content ```Shell DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_PASSWORD=<removed> DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis UPLOAD_LOCATION=/data/immich TYPESENSE_API_KEY=<removed> PUBLIC_LOGIN_PAGE_MESSAGE= IMMICH_WEB_URL=http://immich-web:3000 IMMICH_SERVER_URL=http://immich-server:3001 ``` ### Reproduction steps ```bash 1. Upload a file with one or more sub-extension with mobile client 2. Upload a file with one or more sub-extension with web client 3. Check the name of the files on server storage and on media detail panel ``` ### Additional information _No response_
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#876