Jquery POST 带有 FormData 的图像和字符串
Jquery POST image and string with FormData
这是 JQuery 部分:
$(".btnGorevOlustur").click(function (e) {
var fileUpload = $(".fileGorevResim").get(0);
var files = fileUpload.files;
var dt = new FormData();
for (var i = 0; i < files.length; i++) {
dt.append(files[i].name, files[i]);
}
var gPanoID = id;
var gListeID = gorevListeID;
var gBaslik = $(".txtGorevBaslik").val();
var gAciklama = $(".txtareaGorevAciklama").val();
var gSure = $(".txtGorevSure").val();
dt.append("gpid", gPanoID);
dt.append("glid", gListeID);
dt.append("gbas", gBaslik);
dt.append("gacik", gAciklama);
dt.append("gsur", gSure);
if (gBaslik != null && gBaslik != "" && gAciklama != null && gAciklama != "" && gSure != null && gSure != "") {
$.ajax({
type: "POST",
url: "PanoHandler.ashx",
dataType: "json",
data: dt,
contentType: false,
processData: false,
});
e.preventDefault();
}
});
这是处理程序部分:
var gorevBaslik = context.Request.Form["gbas"];
var gorevAciklama = context.Request.Form["gacik"];
var gorevSure = context.Request.Form["gsur"];
var gorevPanoID = context.Request.Form["gpid"];
var gorevListeID = context.Request.Form["glid"];
var tarih = DateTime.Now.ToString("ddMMyyyyHHmmss");
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
string fname = context.Server.MapPath("~/img/panofoto/" + file.FileName + tarih);
file.SaveAs(fname);
sgFoto = file.FileName + tarih;
}
}
if (!String.IsNullOrEmpty(gorevBaslik) && !String.IsNullOrEmpty(gorevAciklama) && !String.IsNullOrEmpty(gorevSure))
{
var gorev = new Pano_Gorev
{
Baslik = gorevBaslik,
Aciklama = gorevAciklama,
GorevSuresi = gorevSure,
PanoID = Convert.ToInt32(gorevPanoID),
ListeID = Convert.ToInt32(gorevListeID),
Resim = sgFoto,
Olusturan = 1,
OlusturmaTarihi = DateTime.Now
};
dbo.Pano_Gorev.AddObject(gorev);
dbo.SaveChanges();
sresult = true;
context.Response.Write(sresult);
}
else
{
sresult = false;
context.Response.Write(sresult);
}
问题出在处理程序上,因为所有值都为空。
context.request.Form[..] //all coming as null.
我也尝试了以下方法:
context.request[..]
但这也没有用。
我应该怎么做才能解决这个问题?
终于找到问题了。 Jquery 项目中的文档是旧版本,是这些代码不起作用的问题。当我更新 jquery 时,代码确实有效。
我编辑了一些小错误。
因此,此代码可以使用,问题已解决。
使用原生 javascript。例如这是 html :
<form id="upload_form" enctype="multipart/form-data" method="post">
<input type="file" name="file1" id="file1"><br>
<input type="button" value="Upload File" onclick="uploadFile()">
</form>
这是 javascript :
function uploadFile(){
var file = _("file1").files[0];
// alert(file.name+" | "+file.size+" | "+file.type);
var formdata = new FormData();
formdata.append("file1", file);
var ajax = new XMLHttpRequest();
ajax.open("POST", "url");
ajax.send(formdata);
}
这是 JQuery 部分:
$(".btnGorevOlustur").click(function (e) {
var fileUpload = $(".fileGorevResim").get(0);
var files = fileUpload.files;
var dt = new FormData();
for (var i = 0; i < files.length; i++) {
dt.append(files[i].name, files[i]);
}
var gPanoID = id;
var gListeID = gorevListeID;
var gBaslik = $(".txtGorevBaslik").val();
var gAciklama = $(".txtareaGorevAciklama").val();
var gSure = $(".txtGorevSure").val();
dt.append("gpid", gPanoID);
dt.append("glid", gListeID);
dt.append("gbas", gBaslik);
dt.append("gacik", gAciklama);
dt.append("gsur", gSure);
if (gBaslik != null && gBaslik != "" && gAciklama != null && gAciklama != "" && gSure != null && gSure != "") {
$.ajax({
type: "POST",
url: "PanoHandler.ashx",
dataType: "json",
data: dt,
contentType: false,
processData: false,
});
e.preventDefault();
}
});
这是处理程序部分:
var gorevBaslik = context.Request.Form["gbas"];
var gorevAciklama = context.Request.Form["gacik"];
var gorevSure = context.Request.Form["gsur"];
var gorevPanoID = context.Request.Form["gpid"];
var gorevListeID = context.Request.Form["glid"];
var tarih = DateTime.Now.ToString("ddMMyyyyHHmmss");
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
string fname = context.Server.MapPath("~/img/panofoto/" + file.FileName + tarih);
file.SaveAs(fname);
sgFoto = file.FileName + tarih;
}
}
if (!String.IsNullOrEmpty(gorevBaslik) && !String.IsNullOrEmpty(gorevAciklama) && !String.IsNullOrEmpty(gorevSure))
{
var gorev = new Pano_Gorev
{
Baslik = gorevBaslik,
Aciklama = gorevAciklama,
GorevSuresi = gorevSure,
PanoID = Convert.ToInt32(gorevPanoID),
ListeID = Convert.ToInt32(gorevListeID),
Resim = sgFoto,
Olusturan = 1,
OlusturmaTarihi = DateTime.Now
};
dbo.Pano_Gorev.AddObject(gorev);
dbo.SaveChanges();
sresult = true;
context.Response.Write(sresult);
}
else
{
sresult = false;
context.Response.Write(sresult);
}
问题出在处理程序上,因为所有值都为空。
context.request.Form[..] //all coming as null.
我也尝试了以下方法:
context.request[..]
但这也没有用。
我应该怎么做才能解决这个问题?
终于找到问题了。 Jquery 项目中的文档是旧版本,是这些代码不起作用的问题。当我更新 jquery 时,代码确实有效。
我编辑了一些小错误。
因此,此代码可以使用,问题已解决。
使用原生 javascript。例如这是 html :
<form id="upload_form" enctype="multipart/form-data" method="post">
<input type="file" name="file1" id="file1"><br>
<input type="button" value="Upload File" onclick="uploadFile()">
</form>
这是 javascript :
function uploadFile(){
var file = _("file1").files[0];
// alert(file.name+" | "+file.size+" | "+file.type);
var formdata = new FormData();
formdata.append("file1", file);
var ajax = new XMLHttpRequest();
ajax.open("POST", "url");
ajax.send(formdata);
}