用ajax和c#web方法代码调用uploadfile控件

用ajax和c#web方法代码调用uploadfile控件,c#,asp.net,ajax,asp.net-web-api,C#,Asp.net,Ajax,Asp.net Web Api,如何使用上载文件控件C#和一个以上参数调用Ajax请参阅下面的代码并帮助我,我想保存一个包含多个参数的图像以更新图像。请帮我做到这一点 我想用多个参数更新图像 C#代码 [WebMethod] public static string updateid(FileUpload FileUpload1, string currentid) { HttpContext context = HttpContext.Current; string baseUrl = context.Re

如何使用上载文件控件C#和一个以上参数调用Ajax请参阅下面的代码并帮助我,我想保存一个包含多个参数的图像以更新图像。请帮我做到这一点

我想用多个参数更新图像

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 "";
}
[WebMethod]
公共静态字符串updateid(FileUpload FileUpload1,string currentid)
{
HttpContext=HttpContext.Current;
字符串baseUrl=context.Request.Url.Authority+context.Request.ApplicationPath.TrimEnd('/');
if(FileUpload1.HasFile)
{
尝试
{
if(FileUpload1.PostedFile.ContentLength<3267633)
{
字符串strname=FileUpload1.FileName.ToString();
string url=“http://”+baseUrl+“/Images/”+strname;
FileUpload1.PostedFile.SaveAs(url);
int id=Convert.ToInt16(appVars.updateId);
string Query=“更新子类别集imageurl=WHERE id=“+id;
字符串结果=dbAccess.ExecuteOnlyQuery(查询);
}
其他的
{
}
}
捕获(例外情况除外)
{
}
}
返回“”;
}

您可能无法执行该AJAX调用并提交文件,因为输入文件控制受到限制:出于安全原因,浏览器不允许客户端脚本从用户的硬盘上拾取文件

因此,您必须使用已经存在的机制:所述输入文件元素必须位于表单元素中,您可以使用按钮元素或输入提交元素,或者在需要时执行
form.submit()
,提交表单元素(例如,在输入文件的
onchange
事件中,或在某个自定义按钮的
onclick
或类似按钮中)

同样,我怀疑您是否能够找到从JS获取文件内容的方法。使用Flash组件可以获得更多的控制,但这又增加了复杂性和依赖性。您可以轻松地设置输入文件控件的样式,使其外观不同(甚至不显示其按钮),并且对于服务器端,您必须为
HttpPost
调整该方法,不接受任何参数(然后您必须通过
Request.Files
找到它们)

currentid
值可能包含在客户机上隐藏的输入中,并且它需要命名,就像输入文件一样,以便它成为表单提交包的一部分

我希望这有帮助

[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 "";
}