Skip to content

Commit 1879490

Browse files
committed
send Content-Length header in uploads
1 parent 5665175 commit 1879490

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

lib/TasksResource.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import FormData, { type Stream } from 'form-data';
22
import CloudConvert from './CloudConvert';
33
import { type JobTask } from './JobsResource';
44
import axios from 'axios';
5+
import { ReadStream, statSync } from 'fs';
56

67
export type TaskEvent = 'created' | 'updated' | 'finished' | 'failed';
78
export type TaskStatus = 'waiting' | 'processing' | 'finished' | 'error';
89

910
export interface TaskEventData {
1011
task: Task;
1112
}
13+
1214
export interface JobTaskEventData {
1315
task: JobTask;
1416
}
@@ -603,7 +605,8 @@ export default class TasksResource {
603605
async upload(
604606
task: Task | JobTask,
605607
stream: Stream,
606-
filename: string | null = null
608+
filename: string | null = null,
609+
size: number | null = null
607610
): Promise<any> {
608611
if (task.operation !== 'import/upload') {
609612
throw new Error('The task operation is not import/upload');
@@ -619,16 +622,25 @@ export default class TasksResource {
619622
formData.append(parameter, task.result.form.parameters[parameter]);
620623
}
621624

622-
let fileOptions = {};
625+
const fileOptions: { filename?: string; knownLength?: number } = {};
626+
623627
if (filename) {
624-
fileOptions = { filename };
628+
fileOptions.filename = filename;
629+
}
630+
if (size) {
631+
fileOptions.knownLength = size;
632+
} else if (stream instanceof ReadStream) {
633+
fileOptions.knownLength = statSync(stream.path).size;
625634
}
626635
formData.append('file', stream, fileOptions);
627636

628637
return await axios.post(task.result.form.url, formData, {
629638
maxContentLength: Infinity,
630639
maxBodyLength: Infinity,
631640
headers: {
641+
...(formData.hasKnownLength()
642+
? { 'Content-Length': formData.getLengthSync() }
643+
: {}),
632644
...formData.getHeaders()
633645
}
634646
});

0 commit comments

Comments
 (0)