Getting type error on file uploads using url with axios

It does not work…for url file upload…it gives type error…I tried using axios stream …not working

const fetch = require('node-fetch');
const { OpenAI } = require('openai');

async function uploadFile(blob_file_url) {
  try {
    const openai = new OpenAI({
      apiKey: process.env.OPENAI_API_KEY
    });

    const response = await fetch(blob_file_url);

    const fileData = await openai.files.create({
      file: response.body,
      purpose: 'assistants'
    });

    console.log(fileData);
  } catch (error) {
    console.error(error);
  }
}
const blob_file_url = 'some_url';
uploadFile(blob_file_url);

TypeError: Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got function (err) {
** const error = err.name === ‘AbortError’ ? err : new FetchError(Invalid response body while trying to fetch ${_this.url}: ${err.message}, ‘system’, err);**

Hi @hjk.arab47,

If you’re using node-fetch, simply pass the whole response object as file, and if you’re using the axios library, then pass response.response as file.

Here’s an example using the axios library:

import axios from 'axios';
import OpenAI from 'openai';

async function uploadFile(blob_file_url) {
    try {
        const openai = new OpenAI({
            apiKey: "<API_KEY>"
        });

        const response = axios.get(blob_file_url);

        const fileData = await openai.files.create({
            file: response.response,
            purpose: 'assistants'
        });

        console.log(fileData);
    } catch (error) {
        console.error('Error uploading file:', error);
    }
}

const blob_file_url = 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js';
uploadFile(blob_file_url);