Uploadfile
Smartsite 8.0 - ...
De uploadfile methode maakt het mogelijk om bestanden te uploaden. Middels een xml payload dient (de inhoud van) het bestand base64 encoded doorgegeven te worden (binarydata element), evenals de naam van het bestand (filename element) en de doelmap (relatief pad) waar het bestand geplaatst moet worden (path element). Zie het voorbeeld verderop.
De uploadfile WebApi methode voert dezelfde controles uit als de upload functionaliteit binnen de manager zelf, zoals:
- Het opgegeven pad mag niet leeg zijn en moet een relatief pad zijn (binnen de www-root van de site).
- De gebruiker moet schrijfrechten hebben op het betreffende pad.
- De bestandsnaam mag niet leeg zijn en mag geen ongeldige karakters bevatten.
- De extensie van het bestand wordt gecontroleerd ten opzichte van toegestane bestandstypes.
- Indien filetype security is ingeschakeld moet de gebruiker ook schrijfrechten hebben voor het specifieke filetype.
- De grootte van het bestand mag niet de upload limiet overschrijden.
Standaard zal een bestand niet worden overschreven als deze al bestaat in de opgegeven doelmap, maar zal er een fout geretourneerd worden. Om een bestand te overschrijven als deze al bestaat dient een overwrite element toegevoegd te worden met de waarde true.
C# voorbeeld
private static async Task<bool> UploadFile(HttpClient client)
{
string path = @"D:\Images\articlesml1.jpg";
if (File.Exists(path))
{
string content = Convert.ToBase64String(File.ReadAllBytes(path));
XElement data = new XElement("data",
new XElement("path", @"assets\library\images"),
new XElement("filename", Path.GetFileName(path)),
new XElement("binarydata", content));
var httpContent = new StringContent(data.ToString());
var response = await client.PostAsync($"{options.Url}/uploadfile", httpContent);
ReportResponse(response);
}
return true;
}