fix(cli): upload large file (#5242)

* fix(cli): upload large file

* fix: use known configuration

* chore: version bump

* chore: fix repo url

* fix conflict

---------

Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
This commit is contained in:
Alex 2023-11-21 15:52:12 -06:00 committed by GitHub
parent 8ff4a08a2c
commit c8aa782fef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 6 deletions

View file

@ -6,6 +6,8 @@ import { CrawlOptionsDto } from '../cores/dto/crawl-options-dto';
import cliProgress from 'cli-progress';
import byteSize from 'byte-size';
import { BaseCommand } from '../cli/base-command';
import axios, { AxiosRequestConfig } from 'axios';
import FormData from 'form-data';
export default class Upload extends BaseCommand {
uploadLength!: number;
@ -75,7 +77,8 @@ export default class Upload extends BaseCommand {
if (!skipUpload) {
if (!options.dryRun) {
const res = await this.immichApi.assetApi.uploadFile(asset.getUploadFileRequest());
const formData = asset.getUploadFormData();
const res = await this.uploadAsset(formData);
if (options.album && asset.albumName) {
let album = existingAlbums.find((album) => album.albumName === asset.albumName);
@ -134,4 +137,24 @@ export default class Upload extends BaseCommand {
}
}
}
private async uploadAsset(data: FormData): Promise<axios.AxiosResponse> {
const url = this.immichApi.apiConfiguration.instanceUrl + '/asset/upload';
const config: AxiosRequestConfig = {
method: 'post',
maxRedirects: 0,
url,
headers: {
'x-api-key': this.immichApi.apiConfiguration.apiKey,
...data.getHeaders(),
},
maxContentLength: Infinity,
maxBodyLength: Infinity,
data,
};
const res = await axios(config);
return res;
}
}