При использовании graphql-upload, а затем я пытаюсь отправить возвращаемые данные на python-сервер флакона, данные всегда попадают в тело, а не в файл.Заголовок автоматически устанавливается на content-type: multipart/form-data boundary etc....
, когда я использую нижеследующий коннектор graphql.
На этом примере я основал многое из нижеприведенного https://github.com/jaydenseric/apollo-upload-examples/blob/master/api/resolvers.mjs
async fileUpload(page, id, file) {
const { filename, mimetype, createReadStream } = await file;
const stream = await createReadStream();
const form = new FormData();
form.append('file', JSON.stringify({
filename, mimetype, stream
}));
// form.append('file', stream)); // this attempt fails as well
const url = `/${page}/${id}/file`;
return this.post(
url,
null,
{
body: form
}
);
}
Моя схема выглядит следующим образомитак:
type File {
id: ID!
page: String!
name: String
url: String!
}
input FileUploadInput {
id: ID!
page: String!
files: [Upload!]!
}
extend type Mutation {
fileUpload(data: FileUploadInput!): File
}
Resolver
const { GraphQLUpload } = require('graphql-upload');
const singleFileUpload (
root,
{ data: { id, page, files } },
{ dataSources }
) => dataSources.files.fileUpload(id, page, files[0]);
module.exports = {
Upload: GraphQLUpload,
Mutation: {
singleFileUpload
}
};