【发布时间】:2014-06-08 14:19:34
【问题描述】:
嗨,朋友们,我有一个表单,其中有一些文本框、下拉菜单和图像。我正在使用敲除 js 来保存表单详细信息。而且我正在使用uploadify插件将我的图像上传到本地文件夹。我已经实现了所有这些东西,但是在保存值时,直到现在我使用了一个aspx代码。出于上传目的,我们必须选择 ashx。所以这就像两个服务器端的帖子会发生!
所以我想将我的数据保存在 ashx 页面而不是 aspx 中。
但是我很困惑从哪里开始上传..请有人帮我解决这个问题!!!
我正在将我的值保存在如下所示的保存按钮事件中!!
self.AddEvent = function (args) {
// Here--> $('#file_upload').uploadify('upload');
ajax.Post("../Scripts/uploadify/UploadHandler.ashx", JSON.stringify({ objEnt: args }), false).success(function (data) {
if (data.d[0] > 0) {
// or Here--> $('#file_upload').uploadify('upload');
alert('success');
}
我的文件上传设置是:
$('#file_upload').uploadify({
'swf': '../Scripts/uploadify/uploadify.swf',
'uploader': '../Scripts/uploadify/UploadHandler.ashx',
'method': 'post',
'formData': { 'someKey': Filename },
'buttonText': 'Browse',
'auto': false,
'folder': 'upload',
'fileTypeExts': '*.jpg;*.jpeg;*.gif;*.png',
'onSelect': function (file) {
var ext = file.name.split('.').pop();
$("#filename").val(Filename + '.' + ext);
},
'onUploadSuccess': function (file, data, response) {
if (response == true) {
$("#eventGrid").jqxGrid('updatebounddata');
}
}
});
在我的情况下,无法在“onUploadsuccess”中调用 self.AddEvent...!!! 请建议我一些在 ashx 处理程序中同时存储数据和图像的最佳方法。
ashx:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
var data = context.Request;
var sr = new StreamReader(data.InputStream);
var stream = sr.ReadToEnd();
var javaScriptSerializer = new JavaScriptSerializer();
var asd = javaScriptSerializer.Deserialize<RootObject>(stream);
string Newname = context.Request.Form["someKey"];
BAL Bl = new BAL();
string[] args = new string[2];
//AddEvent method will add my data into database add return response "Success"//
args = AddEvent(asd.objEnt);
HttpPostedFile PostedFile = context.Request.Files["Filedata"];
string ext = Path.GetExtension(PostedFile.FileName);
string savepath = "";
string temppath = "";
temppath = System.Configuration.ConfigurationManager.AppSettings["FolderPath"];
savepath = context.Server.MapPath(temppath);
string fileName = Newname + ext;
if (!Directory.Exists(savepath))
Directory.CreateDirectory(savepath);
PostedFile.SaveAs(savepath + @"\" + fileName);
context.Response.Write(temppath + "/" + fileName);
// context.Response.Write(args);
context.Response.StatusCode = 200;
}
}
【问题讨论】:
-
你可以这样使用,先加载所有图片,如果成功,稍后再加载,在uplodify成功后,再进行一次ajax调用,保存数据
-
但是告诉我一件事我怎样才能得到 ashx 处理程序响应的返回值?我知道 context.response.write(args) 将在控制台中写入。但是我怎样才能获得ajax成功的返回值呢??
-
感谢您的帮助!!任何示例链接都会很有帮助!
-
你的意思是在“onUploadSuccess”中我必须发出 ashx 处理程序请求?