ASP.NET 剑道 UI 上传

Posted

技术标签:

【中文标题】ASP.NET 剑道 UI 上传【英文标题】:ASP.NET Kendo UI Upload 【发布时间】:2012-08-11 08:03:39 【问题描述】:

我想使用 Kendo UI 开发一个网站。我可以使用kendo-ui 的其他资格。但是,我不能通过 ASP.NET 使用文件上传。是否有任何示例代码或文档来解决这个问题?

【问题讨论】:

【参考方案1】:

这就是它对我有用的原因:

js:

$(document).ready(function () 
    $(".attachmentUpload").kendoUpload(
        async: 
            saveUrl: "SaveAttachment.aspx",
            autoUpload: true
        
    );
);

页面:

<input name="attachmentUpload" id="attachmentUpload" type="file" class="attachmentUpload" />

SaveAttachment.aspx.cs

public partial class SaveAttachment : Page

    protected void Page_Load(object sender, EventArgs e)
    
        Response.Expires = -1;
        try
        
            HttpPostedFile postedFile = Request.Files["attachmentUpload"];
            //do something with your postedfile
            Response.ContentType = "application/json";
            Response.Write("");
        
        catch (Exception ex)
        
            Response.Write(ex.ToString());

        
    

SaveAttachment.aspx:

<%@ Page Language="C#" CodeBehind="SaveAttachment.aspx.cs" Inherits="Nstar.WebUI.Pages.SaveAttachment" EnableTheming="false" StyleSheetTheme="" Theme="" %>

【讨论】:

@GerryWhitworth 仅供参考:如果您对答案投赞成票会更好。最好的祝愿,卡斯帕'【参考方案2】:

它通过使用与您的方法类似的方法起作用。我创建了一个 upload.aspx 网络表单并通过以下方式调用它:

 $("#userImage").kendoUpload(
                async: 
                    saveUrl: "upload.aspx"
                
            );

我在upload.aspx 的aspx.cs 文件中有这段代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class upload : System.Web.UI.Page

    protected void Page_Load(object sender, EventArgs e)
    
        ProcessRequest();
    
    public void ProcessRequest()
    
        Response.Expires = -1;
        try
        
            var db = new mypicksDBDataContext();
            HttpPostedFile postedFile = Request.Files["photos"];
            string savepath = Server.MapPath("userFolders/images/");
            string filename = postedFile.FileName;
            if (!Directory.Exists(savepath))
                Directory.CreateDirectory(savepath);
            postedFile.SaveAs(savepath + filename);
            Response.Write("upload");
        
        catch (Exception ex)
        
            Response.Write (ex.ToString());

        
    

没问题。它上传文件,但有一个新问题。如何将结果返回给 kendoui。它会上传,但总是显示错误并重试按钮。在 Kendo-ui 的文档中,它说重新调整空字符串以成功上传。我试过 Response.Write("");但它没有用。

【讨论】:

回答自己的问题添加更多问题是个坏主意!您应该更新处理新步骤的原始问题。【参考方案3】:

@sanalism 的回答很好,但是上传控件会显示一个错误和一个重试按钮。为避免这种情况,您需要发送 json 回复:

Response.ContentType = "application/json";
Response.Write("");

【讨论】:

【参考方案4】:

Response.Write(""); 将在upload.aspx 中发送整个标签。 发送到剑道UI上传的结果解析为json格式失败。

因此您必须删除upload.aspx 中&lt;% Page...%&gt; 旁边的所有标签

【讨论】:

【参考方案5】:

这是带有 HTTP 处理程序的示例:

<form id="form1" runat="server">
    <input type="file" name="files" id="photos" />
    <script type="text/javascript">
        $("#photos").kendoUpload(
            async: 
               saveUrl: "UploadHandler.ashx"
            
        );
    </script>
</form>

使用系统; 使用 System.Web;

公共类 UploadHandler : IHttpHandler

public void ProcessRequest(HttpContext context)

    try
    
        HttpFileCollection files = context.Request.Files;
        HttpPostedFile file = files[0];
        int filelength = file.ContentLength;
        byte[] input = new byte[filelength ];
        file.InputStream.Read(input, 0, filelength );

        file.SaveAs(string.Format("C:\\Uploads\\0", file.FileName));
    
    catch (Exception e)
    
        context.Response.Write("'error':'" + e.Message + "'");
    

    context.Response.Write("");


public bool IsReusable

    get
    
        return false;
    

【讨论】:

【参考方案6】:

配置 async.saveUrl 属性以设置接受 POST 请求的处理程序。 然后使用多部分表单数据解析器(如this one from codeplex)来解析剑道上传发送的数据。 另外,将您的服务配置为接受表单数据:Check this post

告诉我进展如何!

【讨论】:

以上是关于ASP.NET 剑道 UI 上传的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 中绑定剑道网格的问题

剑道 DropDownListFor() 与 ASP.NET-MVC

htmlhelper 不包含 ASP.NET MVC RAZOR 中的剑道定义

剑道 DateTimePicker 没有发布 asp.net MVC

如何在 asp.net MVC 4 Razor 中绑定剑道网格

在剑道网格 ASP.NET MVC ClientTemplate 中转义 +(加号)符号