7

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

4

6 回答 6

6

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

js:

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

页:

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

保存附件.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());

        }
    }
}

保存附件.aspx:

<%@ Page Language="C#" CodeBehind="SaveAttachment.aspx.cs" Inherits="Nstar.WebUI.Pages.SaveAttachment" EnableTheming="false" StyleSheetTheme="" Theme="" %>
于 2014-12-18T12:42:50.173 回答
3

它通过使用类似于您的方法的方法起作用。我创建了一个 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(""); 但它没有用。

于 2012-08-21T00:13:46.220 回答
1

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

Response.ContentType = "application/json";
Response.Write("{}");
于 2013-06-27T15:57:04.627 回答
1

Response.Write("{}");将在upload.aspx 中发送整个标签。发送到 Kendo UI 上传的结果无法解析为 json 格式。

因此,您必须删除<% Page...%>upload.aspx中的所有标签

于 2013-10-04T12:45:32.593 回答
1

这是带有 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;
    }
}

}

于 2016-05-03T07:52:05.703 回答
0

配置 async.saveUrl 属性以设置接受 POST 请求的处理程序。然后使用多部分表单数据解析器(例如来自 codeplex 的这个)来解析剑道上传发送的数据。此外,配置您的服务以接受表单数据:检查此帖子

让我知道事情的后续!

于 2012-08-16T23:20:03.097 回答