如何Ajax调用与上传文件控制C#和多一个参数请参阅下面的代码,并帮助我这一点,我想保存一个多参数的图像更新图像。请帮我实现这一目标。
我想用多个参数更新图像。
$scope.myData.updateimage = function(item, event) {
var data = new FormData();
var files = $("#FileUpload1").get(0).files;
// Add the uploaded image content to the form data collection
if (files.length > 0) {
data.append("UploadedImage", files[0]);
}
$.ajax({
type: "POST",
url: "contentlist.aspx/updateid",
data: JSON.stringify({
FileUpload: data,
currentid: $scope.currentid
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
}
});
}C#码
[WebMethod]
public static string updateid(FileUpload FileUpload1, string currentid)
{
HttpContext context = HttpContext.Current;
string baseUrl = context.Request.Url.Authority + context.Request.ApplicationPath.TrimEnd('/');
if (FileUpload1.HasFile)
{
try
{
if (FileUpload1.PostedFile.ContentLength < 3267633)
{
string strname = FileUpload1.FileName.ToString();
string url = "http://" + baseUrl + "/Images/" + strname;
FileUpload1.PostedFile.SaveAs(url);
int id = Convert.ToInt16(appVars.updatedid);
string Query = "UPDATE SubCategories SET imageurl = WHERE id = " + id;
string result = dbAccess.ExecuteOnlyQuery(Query);
}
else
{
}
}
catch (Exception ex)
{
}
}
return "";
}发布于 2017-12-26 18:44:16
您可能无法执行AJAX调用,提交文件,因为输入文件控件受到限制:出于安全考虑,浏览器不允许客户端脚本从用户的硬盘中选择文件。
因此,您必须使用已经存在的机制:上述输入文件元素必须在表单元素中,您可以使用按钮元素或输入提交元素提交表单元素,或者在需要时执行form.submit() (例如,在输入文件的onchange事件中,或者在某个自定义按钮的onclick中,或者类似的)。
同样,我怀疑您是否能够找到从JS获取文件内容的方法。可以使用Flash组件进行更多的控制,但这是额外的复杂性和依赖性。您可以轻松地将输入文件控件的样式设置为不同的外观(甚至不显示其按钮),就服务器端而言,您将不得不为HttpPost调整该方法,不接受任何arg(在那里您必须通过Request.Files找到它们)。
currentid值也许可以被隐藏在客户机上的输入所包含,并且它需要被命名,就像输入文件一样,这样它就成为表单提交包的一部分。
我希望这能帮上忙。
https://stackoverflow.com/questions/47981657
复制相似问题