validate type mvc kendo files dropzone custom asp.net-mvc asp.net-mvc-4 kendo-ui asyncfileupload kendo-asp.net-mvc

asp.net-mvc - mvc - kendo upload validate file type



Kendo UI Async Upload no funciona en Internet Explorer (2)

Estoy tratando de usar la carga de interfaz de usuario de Kendo (envoltura MVC) en modo asíncrono. Las cosas parecen funcionar bien en Chrome, pero no tuvieron tanta suerte en IE (a partir de ahora solo se probaron en IE 9). Cuando inicia la carga, puedo ver que golpea mi método de acción y la solicitud contiene los datos que espero, pero en realidad no se está guardando nada.

Las muestras de código están a continuación:

_EditForm.cshtml (donde está la carga)

@(Html.Kendo().Upload() .Name(string.Format("upload{0}", "background")) .Multiple(true) .Events(evt => evt.Success("refreshBackgroundImages")) .Messages(msg => msg.DropFilesHere("drag and drop images from your computer here") .StatusUploaded("Files have been uploaded")) .Async(a => a.AutoUpload(true) .SaveField("files") .Save("UploadImage", "Packages", new { siteId = Model.WebsiteId, type = "background" })))

Controller ActionMethod

[HttpPost] public ActionResult UploadImage(IEnumerable<HttpPostedFileBase> files, Guid siteId, string type) { var site = _websiteService.GetWebsite(siteId); var path = Path.Combine(_fileSystem.OutletVirtualPath, site.Outlet.AssetBaseFolder); if (type == "background") { path = Path.Combine(path, _backgroundImageFolder); } else if (type == "image") { path = Path.Combine(path, _foregroundImageFolder); } foreach (var file in files) { _fileSystem.SaveFile(path, file.FileName, file.InputStream, file.ContentType, true); } // Return empty string to signify success return Content(""); }


Bueno, como decía otra publicación, "Bienvenido al episodio 52,245,315 de ''Por qué Internet Explorer es tan malo'':

Resulta que cuando hace file.FileName en una HttpPostedFileBase en Internet Explorer, cree que quiere la ruta completa del archivo en la máquina local . Obviamente es solo un IE, ya que Chrome y Firefox parecen tener razón.

Asegúrese de hacer lo siguiente cuando solo desee el nombre de FileName real :

var filename = Path.GetFileName(file.FileName);


El problema es cuando realmente intentas guardar un archivo y enviar una respuesta exitosa desde el servidor. No creo que tus demos hagan nada de eso. El iframe en ie9 no recibe la respuesta del servidor. El navegador piensa que la respuesta es una descarga, aunque solo se trata de una respuesta de texto sin formato. Lo depure hasta el hecho de que el evento de carga en el iframe nunca se dispara, por lo que el controlador de carga que necesita manejar esta respuesta no está haciendo nada. En todos los demás navegadores esto está funcionando.

Fuente: http://www.kendoui.com/forums/kendo-ui-web/upload/async-uploader-and-ie-9-not-working.aspx