我有一个ASP.NET c#
页面,它将使用JSON格式的AJAX发布表单信息。
此信息包括Texboxes
的文本和Dropdownlists
等的值
我也需要发送文件。
我尝试了以下代码,它运行正常:
$(".popup-content input:text,.popup-content textarea").each(function () { // Fill object by inputs
objInputs[$(this).attr("name")] = $(this).val();
});
$.ajax({ //Post information
type: "POST",
url: "myAjax.aspx",
data: { func: "Create", information: JSON.stringify(objInputs) /* Convert object to JSON string */ },
success: function (data) { // if sending was successful try to send file
var files = $("#fileImage").get(0).files; //get files form uploadfile
if (files.length > 0) {
var data = new FormData();
data.append(files[0].filename, files[0]);
$.ajax({ //Send file
type: "POST",
url: "Handler1.ashx",
contentType: false,
processData: false,
data: data,
success: function (data) {
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + " " + thrownError);
},
});
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + " " + thrownError);
},
});
但现在我想知道是否有办法将我的文件与我的JSON一起发送?
答案 0 :(得分:0)
我找到了解决方案。 Jquery代码应该改为如下所示:
<script>
$(document).ready(function () {
$(document).on("click", "#submit", function () {
var objInputs = {};
objInputs["id"] = "12";
$("#form1 input:text").each(function () { // Fill object by inputs
objInputs[$(this).attr("name")] = $(this).val();
});
var formData = new FormData();
formData.append("information", JSON.stringify(objInputs));
var files = $("#fileupload").get(0).files; //get files form uploadfile
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
//add each file to the form data and iteratively name them
formData.append("file-" + i, files[i]);
}
$.ajax({ //Send file
type: "POST",
url: "Handler1.ashx",
contentType: false,
processData: false,
data: formData,
success: function (data) {
alert(data)
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + " " + thrownError);
},
});
}
});
});
</script>
和C#代码处理发送的数据(Handler1.ashx):
public void ProcessRequest(HttpContext context)
{
if (context.Request.Files.Count > 0) //To handling files
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
if ((files[i].ContentLength < 500000) && (files[i].ContentType == "image/jpeg"))
{
HttpPostedFile file = files[i];
string fname = context.Server.MapPath("~/Images/" + file.FileName);
file.SaveAs(fname);
}
}
context.Response.ContentType = "text/plain";
context.Response.Write("File Uploaded Successfully!");
}
if (!string.IsNullOrEmpty(context.Request["information"])) //To handeling JSON
{
string JSON = context.Request["information"]; //JSON String
}
}