Telerik UI for ASP。NET MVC?下载30天免费试用

运作模式

上传提供同步而且异步操作模式。

同步模式

同步模式下的Upload行为类似于常规的文件输入——在提交表单时上传所选文件,用户可以选择一组文件。当Upload处于同步模式时,浏览器不必支持多个文件选择。

@(Html.Kendo().Upload() .Name("files") .HtmlAttributes(new {aria_label =" files"}))

.
public IWebHostEnvironment设置;} public UploadController(IWebHostEnvironment webHostEnvironment) {webHostEnvironment = webHostEnvironment;} public ActionResult Submit(IEnumerable files){//上传组件的名称为files。if (files != null) {foreach (var file in files) {var fileContent = ContentDispositionHeaderValue.Parse(file. contentdisposition);//有些浏览器会发送带有完整路径的文件名。// demo只对文件名感兴趣。var fileName = Path.GetFileName(fileContent.FileName.ToString().Trim('"'));var physicalPath = Path.Combine(WebHostEnvironment. varWebRootPath, "App_Data", fileName);using (var fileStream = new fileStream (physicalPath, FileMode.Create)){等待file.CopyToAsync(fileStream); } } } return View("Result"); }

异步模式

异步模式下的Upload需要专用的服务器处理程序来存储和删除上传的文件。文件立即上传,或者在用户确认后上传(可选)。上传请求在不中断页面流的情况下在带外执行。异步模式是通过HTML5文件API

@(Html.Kendo().Upload() .Name("files") .Async(a => a .Save("SaveAsync", "Upload") .Remove("Remove", "Upload") .AutoUpload(true))))
public IWebHostingEnvironment WebHostEnvironment {get;设置;} public UploadController(IWebHostEnvironment webHostEnvironment) {webHostEnvironment = webHostEnvironment;} public async Task SaveAsync(IEnumerable files) {// Upload组件的名称为files。if (files != null) {foreach (var file in files) {var fileContent = ContentDispositionHeaderValue.Parse(file. contentdisposition);//有些浏览器会发送带有完整路径的文件名。//我们只对文件名感兴趣。var fileName = Path.GetFileName(fileContent.FileName.ToString().Trim('"'));var physicalPath = Path.Combine(WebHostEnvironment. varWebRootPath, "App_Data", fileName);using (var fileStream = new fileStream (physicalPath, FileMode.Create)){等待file.CopyToAsync(fileStream); } } } // Return an empty string to signify success. return Content(""); } public ActionResult Remove(string[] fileNames) { // The parameter of the Remove action must be called "fileNames". if (fileNames != null) { foreach (var fullName in fileNames) { var fileName = Path.GetFileName(fullName); var physicalPath = Path.Combine(WebHostEnvironment.WebRootPath, "App_Data", fileName); // TODO: Verify user permissions. if (System.IO.File.Exists(physicalPath)) { System.IO.File.Delete(physicalPath); } } } // Return an empty string to signify success. return Content(""); }

处理程序

保存处理者必须接受帖子请求。请求将包含一个或多个与输入——例如,“文件[]”在前面控制器的例子。处理程序将返回以下响应中的任何一个:

  • 表示成功的空洞回答。
  • JSON字符串“文本/普通”内容编码。反序列化对象可在成功事件处理程序,再次表示成功。
  • 任何其他表示失败的响应。

删除处理者必须接受帖子请求。属性的请求将包含一个或多个文本字段“文件名”[]的名字。处理程序将返回以下响应中的任何一个:

  • 表示成功的空洞回答。
  • JSON字符串“文本/普通”内容编码。反序列化对象可在成功事件处理程序,再次表示成功。
  • 任何其他表示失败的响应。

异步模式回退

当Upload被放置在形式并且被配置为异步操作,因此它支持回退机制。未完全上传的文件将作为形式在其提交的用户,这确保没有文件丢失,即使你不采取任何特殊措施来阻止提交按钮。

上传的文件必须在保存处理程序和形式提交动作,如在同步模式中。

另请参阅

在本文中
Baidu
map