我已经阅读了一些相关的帖子但是到目前为止任何人都可以帮助我,我现在尝试上传在客户端输入文件中选择的文件,然后使用jquery ajax调用调用服务器方法,请我是怎么做的:
Sever Side Method:
[WebMethod]public static void UploadDetailImageFromClient(string filename, string caption, string itemid, string inspid) {
HttpPostedFile file = HttpContext.Current.Request.Files["ContentPlaceHolder1_uploadBtn"]; if (file != null && file.ContentLength > 0) //See the id here include ContentPlaceHolder as I'm using a MasterPage, here is where I'm never getting the file, it comes NULL
{
string fname = Path.GetFileName(file.FileName);
if (!System.IO.File.Exists(Path.Combine("images/", fname))) {
file.SaveAs(HttpContext.Current.Server.MapPath(Path.Combine("images/", fname)));
}
}
}
客户端:
<td><asp:FileUpload ID="uploadBtn" runat="server" accept=".png,.jpg,.jpeg,.gif"/></td>
这是我调用以调用服务器方法的函数:
function uploadnewpicture() {
jQuery.ajax({
type: "POST",
url: "FormInspectionsMidPoint.aspx/UploadDetailImageFromClient",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ filename: filename, caption: caption, itemid: itemid, inspid: inspid }),
dataType: "json",
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
},
success: function (data) {
jQuery("#ContentPlaceHolder1_uploadBtn").val("");
jQuery("#ContentPlaceHolder1_txtImageDetailCaption").val("");
alert("Picture uploaded successfully");
}
});
}
请注意,我在点击事件的输入按钮上调用此javascript函数,该事件位于jQuery对话框中。这就是我使用ajax调用来保持对话框以及从客户端读取输入文件中的值的原因。我也在使用enctype =&#34; multipart / form-data&#34;在表格中。
我希望有人有同样的情况,可以帮助我。感谢。
答案 0 :(得分:0)
我在项目中遇到了同样的情况。您可以在客户端创建表单数据对象,并将该文件对象添加到该表单数据对象并传递给控制器。并从服务器端请求接收所选文件。
客户方: - var data = new FormData(); data.append(“file”,file);
服务器端: - HttpPostedFileBase文件= Request.Files [“file”]