Skip to content

Commit d35c724

Browse files
authored
Add polling getFile for all file upload samples (google-gemini#353)
1 parent e2a356d commit d35c724

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

samples/files.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ async function filesCreateImage() {
4242
`Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
4343
);
4444

45+
// Polling getFile to check processing complete
46+
let file = await fileManager.getFile(uploadResult.file.name);
47+
while (file.state === FileState.PROCESSING) {
48+
process.stdout.write(".");
49+
// Sleep for 10 seconds
50+
await new Promise((resolve) => setTimeout(resolve, 10_000));
51+
// Fetch the file from the API again
52+
file = await fileManager.getFile(uploadResult.file.name);
53+
}
54+
if (file.state === FileState.FAILED) {
55+
throw new Error("Audio processing failed.");
56+
}
57+
4558
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
4659
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
4760
const result = await model.generateContent([
@@ -121,6 +134,19 @@ async function filesCreateText() {
121134
`Uploaded file ${uploadResult.file.displayName} as: ${uploadResult.file.uri}`,
122135
);
123136

137+
// Polling getFile to check processing complete
138+
let file = await fileManager.getFile(uploadResult.file.name);
139+
while (file.state === FileState.PROCESSING) {
140+
process.stdout.write(".");
141+
// Sleep for 10 seconds
142+
await new Promise((resolve) => setTimeout(resolve, 10_000));
143+
// Fetch the file from the API again
144+
file = await fileManager.getFile(uploadResult.file.name);
145+
}
146+
if (file.state === FileState.FAILED) {
147+
throw new Error("Audio processing failed.");
148+
}
149+
124150
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
125151
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
126152
const result = await model.generateContent([
@@ -213,6 +239,20 @@ async function filesCreatePDF() {
213239
console.log(
214240
`Uploaded file ${uploadResponse.file.displayName} as: ${uploadResponse.file.uri}`,
215241
);
242+
243+
// Polling getFile to check processing complete
244+
let file = await fileManager.getFile(uploadResult.file.name);
245+
while (file.state === FileState.PROCESSING) {
246+
process.stdout.write(".");
247+
// Sleep for 10 seconds
248+
await new Promise((resolve) => setTimeout(resolve, 10_000));
249+
// Fetch the file from the API again
250+
file = await fileManager.getFile(uploadResult.file.name);
251+
}
252+
if (file.state === FileState.FAILED) {
253+
throw new Error("Audio processing failed.");
254+
}
255+
216256
// Generate content using text and the URI reference for the uploaded file.
217257
const result = await model.generateContent([
218258
{

0 commit comments

Comments
 (0)