From 453537426a4e172967320cfac4bb1f53c28d94f5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 3 Dec 2021 14:23:45 +0100 Subject: [PATCH] Fix too long filename video upload --- .../video-upload.component.ts | 21 ++++++++++++++++--- .../middlewares/validators/videos/videos.ts | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts index 76205db44..28d7ec458 100644 --- a/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts +++ b/client/src/app/+videos/+video-edit/video-add-components/video-upload.component.ts @@ -1,4 +1,6 @@ +import { truncate } from 'lodash-es' import { UploadState, UploadxOptions, UploadxService } from 'ngx-uploadx' +import { isIOS } from 'src/assets/player/utils' import { HttpErrorResponse, HttpEventType, HttpHeaders } from '@angular/common/http' import { AfterViewInit, Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core' import { Router } from '@angular/router' @@ -10,7 +12,6 @@ import { LoadingBarService } from '@ngx-loading-bar/core' import { HttpStatusCode, VideoCreateResult, VideoPrivacy } from '@shared/models' import { UploaderXFormData } from './uploaderx-form-data' import { VideoSend } from './video-send' -import { isIOS } from 'src/assets/player/utils' @Component({ selector: 'my-video-upload', @@ -281,6 +282,7 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy channelId: this.firstStepChannelId, nsfw: this.serverConfig.instance.isNSFW, privacy: this.highestPrivacy.toString(), + name: this.buildVideoFilename(file.name), filename: file.name, previewfile: previewfile as any } @@ -311,8 +313,7 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy } private closeFirstStep (filename: string) { - const nameWithoutExtension = filename.replace(/\.[^/.]+$/, '') - const name = nameWithoutExtension.length < 3 ? filename : nameWithoutExtension + const name = this.buildVideoFilename(filename) this.form.patchValue({ name, @@ -369,4 +370,18 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy return extensions.some(e => filename.endsWith(e)) } + + private buildVideoFilename (filename: string) { + const nameWithoutExtension = filename.replace(/\.[^/.]+$/, '') + let name = nameWithoutExtension.length < 3 + ? filename + : nameWithoutExtension + + const videoNameMaxSize = 110 + if (name.length > videoNameMaxSize) { + name = truncate(name, { length: videoNameMaxSize, omission: '' }) + } + + return name + } } diff --git a/server/middlewares/validators/videos/videos.ts b/server/middlewares/validators/videos/videos.ts index 4916decbf..3ebdbc33d 100644 --- a/server/middlewares/validators/videos/videos.ts +++ b/server/middlewares/validators/videos/videos.ts @@ -211,7 +211,7 @@ const videosAddResumableInitValidator = getCommonVideoEditAttributes().concat([ const videoFileMetadata = { mimetype: req.headers['x-upload-content-type'] as string, size: +req.headers['x-upload-content-length'], - originalname: req.body.name + originalname: req.body.filename } const user = res.locals.oauth.token.User