REST API
Documentatie
- Nederlands
- English
File transfer
Je kunt je bestanden op twee verschillende manieren aanleveren. In de stap Bestellen was al te zien dat je de bestanden kon aanleveren als URL's, wanneer je de bestelling aanmaakt:
Files = new PrintApi.Input.Order.Item.FileList
{
Cover = "https://www.printapi.nl/sample-book-a5-cover.pdf",
Content = "https://www.printapi.nl/sample-book-a5-content.pdf",
}
Print API zal deze bestanden dan automatisch asynchronous downloaden. Dat gebeurt meestal binnen tien minuten: je hoeft hier verder zelf niets voor te doen. Voldoet het bestand niet aan het aanleverformat of mislukt de download, dan krijg je per e-mail een foutmelding. Is dit voor jou een geschikte oplossing, dan kun je dus direct door naar de volgende stap.
Zijn jouw bestanden niet openbaar beschikbaar vanaf een webserver, lees dan verder. Je kunt de bestanden namelijk ook naar de API uploaden. Dat is slechts een kleine extra stap.
Alternatief Uploaden
Je kunt jouw bestanden ook uploaden, na het aanmaken van de bestelling. Print API geeft elk aan te
leveren bestand een unieke uploadUrl
, waar je jouw bestand naar kunt POST
-en. Die
URL's staan in de API response van je bestelling.
Om deze functie te gebruiken, moet je eerst het volledige Files
-object uit je bestelgegevens
weghalen, of op null
zetten. Daardoor zal de API wachten op uploads. Onze C# library heeft een
speciale functie voor het uploaden van bestanden:
// var order = await client.Orders.PostAsync(...);
var item = order.Items.First();
using (var file = File.OpenRead("files/123/content.pdf"))
{
await client.Files.PostAsync(item.Files.Content, file, FileType.PDF);
}
using (var file = File.OpenRead("files/123/cover.pdf"))
{
await client.Files.PostAsync(item.Files.Cover, file, FileType.PDF);
}
De bestandspaden files/123/content.pdf
en files/123/cover.pdf
zijn natuurlijk
fictief. Pas deze code aan om jouw bestanden te uploaden. Het cover
-bestand is alleen nodig
voor boeken, dus bestel je iets anders, dan hoef je alleen een content
aan te leveren.
Tip: meerdere items, unieke bestanden
Bovenstaand voorbeeld gaat er vanuit dat je altijd één item bestelt, met vaste bestanden. Vaak zal dat niet het geval zijn, en heb je meerdere items met unieke bestanden. Om de juiste bestanden bij de juiste items te zoeken, kan het handig zijn om bij het aanmaken van je bestelling metadata op te geven:
Meesturen metadata:var item1 = new PrintApi.Input.Order.Item
{
ProductId = "poster_a4_sta",
Quantity = 100,
Metadata = Newtonsoft.Json.JsonConvert.SerializeObject(new
{
File = @"D:\e7JkW4YVNE1qg6iRMBZ3.png"
})
};
In het metadata
-veld kun je jouw eigen data kwijt. Bijvoorbeeld een bestandspad of -ID.
Dat mag in JSON, XML of elk ander format dat je wilt. Bij het uploaden kun je dit veld weer uitlezen:
foreach (var item in order.Items)
{
var metadata = Newtonsoft.Json.Linq.JObject.Parse(item.Metadata);
using (var file = File.OpenRead(metadata.Value<string>("File")))
{
await client.Files.PostAsync(item.Files.Content, file, FileType.PNG);
}
}