Ich arbeite derzeit an dem Hochladen von Dateien über die stagedUploadsCreate Mutation in node.js.
Ich habe es derzeit geschafft, eine Datei in den Shopify Staged Upload Storage auf Google Cloud hochzuladen, aber die Datei ist leer!
Das ist der Code:
- Erstellen des Staged Uploads:
const CREATE_STAGED_UPLOADS = `
mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {
stagedUploadsCreate(input: $input) {
stagedTargets {
resourceUrl
url
parameters {
name
value
}
}
userErrors {
field
message
}
}
}
`;
const response = await client.query({
data: {
query: CREATE_STAGED_UPLOADS,
variables: {
"input": [
{
"resource": "FILE",
"filename": file.name,
"mimeType": fileType.toString(),
"fileSize": file.size.toString(),
"httpMethod": "POST"
}
]
},
},
});
Dies führt zu einer erfolgreichen Antwort.
- Dann sende ich einen Fetch Request an den URL von der stagedUploadsCreate Mutation:
const parameters = response?.body?.data?.stagedUploadsCreate?.stagedTargets[0]?.parameters;
const url = response?.body?.data?.stagedUploadsCreate?.stagedTargets[0].url;
const formData = new FormData();
parameters.forEach(({name, value}) => {
formData.append(name, value)
});
formData.append('file', file);
const response = await fetch(url, {
method: 'POST',
body: formData
});
Die Antwort gibt ebenfalls 201 “Created” mit dem folgenden Xml-Objekt zurück:
{
PostResponse: {
Location: [
'https://storage.googleapis.com/shopify-staged-uploads/tmp/72115945762/files/63bd5db8-afc9-435b-bc2b-a0d0b5be791f/check-2.png'
],
Bucket: [ 'shopify-staged-uploads' ],
Key: [
'tmp/72115945762/files/63bd5db8-afc9-435b-bc2b-a0d0b5be791f/check-2.png'
],
ETag: [ '"************************"' ]
}
}
Aber wenn Sie die resourceUrl aus der createStagedUpload-Mutation und die Location url aus der xml-Antwort aufrufen, wird ein leeres Bild angezeigt:
Ich hoffe, dass ich dieses Problem ausreichend und verständlich erläutert habe.
Vielen Dank im Voraus!
