我想使用 Kendo UI 开发一个网站。我可以使用kendo-ui
. 但是,我不能通过 ASP.NET 使用文件上传。是否有任何示例代码或文档来克服这个问题?
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="" %>
它通过使用类似于您的方法的方法起作用。我创建了一个 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(""); 但它没有用。
@sanalism 的回答很好,但是上传控件会显示一个错误和一个重试按钮。为避免这种情况,您需要发送 json 回复:
Response.ContentType = "application/json";
Response.Write("{}");
Response.Write("{}");
将在upload.aspx 中发送整个标签。发送到 Kendo UI 上传的结果无法解析为 json 格式。
因此,您必须删除<% Page...%>
upload.aspx中的所有标签
这是带有 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;
}
}
}
配置 async.saveUrl 属性以设置接受 POST 请求的处理程序。然后使用多部分表单数据解析器(例如来自 codeplex 的这个)来解析剑道上传发送的数据。此外,配置您的服务以接受表单数据:检查此帖子
让我知道事情的后续!