Hello,
is it possible to add a button to upload files inside the Form?
Is it possible to integrate this code
@(Html.Kendo().Upload() .Name("files") .HtmlAttributes(new { aria_label = "files" }))into this one
@(Html.Kendo().Form<TicketModel>() .Name("formExample") .HtmlAttributes(new { action = "TicketExpress", method = "POST" }) .Items(items => { items.Add() .Field(f => f.Description) .Label(l => l.Text("Description:"));items.Add() .Field(f => f.Type) .Label(l => l.Text("Type:")) .Editor(e => { e.Upload() ?????????? }})Thank you
4 Answers, 1 is accepted
Hello Stefania,
Currently, the Upload can only be added as a custom editor through the EditorTemplateHandler() option as follows:
.Items(items =>
{
items.Add()
.Field(f => f.Files)
.EditorTemplateHandler("customUploadTemplate");
})
...
<script>
function customUploadTemplate(container, options) {
$('<input type="file" name="' + options.field + '"/>')
.appendTo(container)
.kendoUpload();
}
</script>I have also logged a new feature request on your behalf in the FeedBack Portal for implementing the Upload as a built-in editor that can be configured through the .Items configuration:
As a small token of gratitude for submitting this request, I have also updated your Telerik Points.
In case you have any additional questions, please let me know.
Regards,
Dimitar
Progress Telerik
Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.
Hello Dimatar,
thank you for you reply.
I did as you suggested but I have some trouble to get the data from my controller.
I need to add multple files so I change your code like this:
$('<input type="file" multiple="multiple" name="' + options.field + '"/>') .appendTo(container) .kendoUpload();
My model has this field
public Dictionary<string, byte[]> Attachments { get; set; }I also tried with this one
public List<byte[]> Attachments { get; set; }and this one for a single file
public byte[] Attachments { get; set; }
My controller
public async Task<IActionResult> CreateTicket(TicketModel model) { #region CHECK FIELDS .... #endregion if (!ModelState.IsValid) { return View(model); } else { //attachments // MODEL.ATTACHMENTS IS EMPTY //SAVE using (var httpClient = new HttpClient()) { StringContent content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); using (var response = await httpClient.PostAsync("http://localhost:8888/api/Tickets", content)) { string apiResponse = await response.Content.ReadAsStringAsync(); } } TempData["View"] = "CreateTicket"; return View(model); } }
Here when I check model.Attachments is null or Count is 0
Any advise?
Thank you
Hello Stefania,
In order to correctly receive the uploaded files in the controller end-point, please specify the model field as follows:
public IEnumerable<HttpPostedFileBase> Files { get; set; }Regards,
Dimitar
Progress Telerik
Five days of Blazor, Angular, React, and Xamarin experts live-coding on twitch.tv/CodeItLive , special prizes and more, for FREE?! Register now for DevReach 2.0(20).
Thank you,
I'm using Core so I changed your code like this and it works
public IEnumerable<IFormFile> Files { get; set; }
