不带表单和带 formData jquery 和 asp.net 的文件和数据上传
files and data upload without form and with formData jquery and asp.net
(...)
编辑:
//客户端
var $elem = $("a.attachMessageBtn");
var evtOnClick = $elem.attr('onclick');
var postData = new FormData();
postData.append("FID", FID);
postData.append("messageText", messageToSend);
for (var i = 0; i < files.length; i++)
{
postData.append(files[i].name, files[i]);
}
$.ajax(
{
url: ajaxUrl + "?a=setNewMessage",
type: "POST",
data: postData,
cache: false,
processData: false,
contentType: false,
forceSync: false,
enctype: "multipart/form-data",
beforeSend: function (jqXHR, settings)
{
// Something being done here.
},
success: function (data, textStatus, jqXHR)
{
// Something being done here.
},
error: function (jqXHR, textStatus, errorThrown)
{
// Something being done here.
},
complete: function (jqXHR, textStatus)
{
// Something being done here.
}
});
// 服务器端
string sMessageText = Request.Form["messageText"];
int nFID = 0;
if (!string.IsNullOrEmpty(sMessageText) && int.TryParse(Request.Form["fid"] + "", out nFID))
{
if (Request.Files != null)
{
int nFilesCount = Request.Files.Count;
if (nFilesCount > 0 && nFilesCount <= 3)
{
foreach (string file in Request.Files)
{
// Specific code here that has always been working.
}
}
}
}
编辑 2
好的,终于得到了文件和数据,但现在我又一次面临循环消息的问题。
假设我发送了一封带有一个附件的邮件;然后我发送另一条消息,例如,2个附件->第二条消息将发送两次;然后我再发一条消息,不管附件多少->都会发3次
我的代码就是上面那个,怎么解决的?
有什么帮助吗?
非常感谢您。
我实际上最终解决了这个问题,同时做了我在这里回答的同样的事情 。
对于文件,我使用了 for 循环,然后将其余数据附加到 formData obj。
目前一切正常...
(...)
编辑:
//客户端
var $elem = $("a.attachMessageBtn");
var evtOnClick = $elem.attr('onclick');
var postData = new FormData();
postData.append("FID", FID);
postData.append("messageText", messageToSend);
for (var i = 0; i < files.length; i++)
{
postData.append(files[i].name, files[i]);
}
$.ajax(
{
url: ajaxUrl + "?a=setNewMessage",
type: "POST",
data: postData,
cache: false,
processData: false,
contentType: false,
forceSync: false,
enctype: "multipart/form-data",
beforeSend: function (jqXHR, settings)
{
// Something being done here.
},
success: function (data, textStatus, jqXHR)
{
// Something being done here.
},
error: function (jqXHR, textStatus, errorThrown)
{
// Something being done here.
},
complete: function (jqXHR, textStatus)
{
// Something being done here.
}
});
// 服务器端
string sMessageText = Request.Form["messageText"];
int nFID = 0;
if (!string.IsNullOrEmpty(sMessageText) && int.TryParse(Request.Form["fid"] + "", out nFID))
{
if (Request.Files != null)
{
int nFilesCount = Request.Files.Count;
if (nFilesCount > 0 && nFilesCount <= 3)
{
foreach (string file in Request.Files)
{
// Specific code here that has always been working.
}
}
}
}
编辑 2
好的,终于得到了文件和数据,但现在我又一次面临循环消息的问题。
假设我发送了一封带有一个附件的邮件;然后我发送另一条消息,例如,2个附件->第二条消息将发送两次;然后我再发一条消息,不管附件多少->都会发3次
我的代码就是上面那个,怎么解决的?
有什么帮助吗?
非常感谢您。
我实际上最终解决了这个问题,同时做了我在这里回答的同样的事情
对于文件,我使用了 for 循环,然后将其余数据附加到 formData obj。
目前一切正常...