Unable to Upload Files Larger than 2GB to Firebase Storage
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- firebase, node.js, typescript
Research direction
Start with the provided uploadFileViaStream function and reproduce the failure in the Firebase Storage SDK 10.12.2 on Node.js using a file over 2GB, then compare it with the stated 1.8GB case. Trace the Gaxios EPROTO request to determine whether the issue is in the SDK upload path or its usage; done means the cause and a supported resolution are clearly established.
Written by the indexing model from the issue text.
Description
[REQUIRED] Step 2: Describe your environment
Operating System
- MAC OS SONOMA 14.5
Browser Version
- ARC (CHROME)
Firebase SDK Version
- 10.12.2
Firebase SDK Product:
- Storage
NPM and NODE:
I'm using nestJS (@10.3.9), nodeJS (v20.11.1) and npm 10.2.4
[REQUIRED] Step 3: Describe the problem
I am experiencing an issue where attempting to upload files larger than 2GB to Firebase Storage results in a GaxiosError: request to https://storage.googleapis.com/upload/storage/v1/b/[...] failed, reason: write EPROTO.
However, smaller files (e.g., 1.8GB) upload without any issues.
Steps to reproduce:
- Attempt to upload a file larger than 2GB using the Firebase Storage SDK in a Node.js application.
- Encounter the following error:
Failed to upload file. GaxiosError: request to [https://storage.googleapis.com/upload/storage/v1/b/...] failed, reason: write EPROTO
at Gaxios._request (/path/to/project/node_modules/gaxios/src/gaxios.ts:157:13)
type: 'system',
errno: 'EPROTO',
code: 'EPROTO'
Relevant Code:
Here is a sample of the TypeScript function used for uploading:
import { Stream } from 'stream';
import { getStorageAdmin } from 'path-to-your-storage-admin-utils';
async uploadFileViaStream(fileStream: Stream, path: string): Promise<string> {
console.debug('Uploading file to storage using stream...');
const storage = getStorageAdmin();
const bucket = storage.bucket('voicecheap-c1f14.appspot.com');
const fileRef = bucket.file(path);
const contentType =
path.split('.').pop() === 'mp3' ? 'audio/mpeg' : 'video/mp4';
// Verify if the file already exists
const [exists] = await fileRef.exists();
if (exists) {
console.debug('File already exists. Skipping upload.');
return fileRef.publicUrl();
}
return new Promise((resolve, reject) => {
fileStream
.pipe(
fileRef.createWriteStream({
contentType: contentType,
public: true,
metadata: {
contentType: contentType,
mimeType: contentType,
type: contentType,
},
}),
)
.on('error', (error) => {
console.error('Failed to upload file.', error);
reject(error);
throw new InternalServerErrorException('Failed to upload file.');
})
.on('finish', async () => {
// Make the file publicly accessible
try {
await fileRef.makePublic();
console.debug('File uploaded and made public.');
resolve(fileRef.publicUrl());
} catch (error) {
console.error('Failed to make the file public.', error);
reject(error);
throw new InternalServerErrorException(
'Failed to make the file public.',
);
}
});
});
}
- Dominant language
- TypeScript
- Stars
- 1.7k
- Forks
- 419
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 16
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from firebase/firebase-admin-node
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
firebase/firebase-admin-node#3234 ·
-
firebase/firebase-admin-node#3221 · 3 comments · 1 assignee ·
-
api: messaging
Difficulty 3/5 1-2 days Newbie friendliness 70/100
firebase/firebase-admin-node#3215 ·
-
api: messaging
Difficulty 5/5 Over a week Newbie friendliness 28/100
firebase/firebase-admin-node#3214 ·
-
api: firestore type: feature request
firebase/firebase-admin-node#3183 · 1 comment · 1 assignee ·
All issues in firebase/firebase-admin-node
Similar issues
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Crush Open
Difficulty 1/5 Under an hour Newbie friendliness 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Open
Difficulty 1/5 Under an hour Newbie friendliness 90/100
ElementsProject/cln-application#167 · 1 comment · 1 reaction ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Quantco/pnpm-licenses#17 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100