首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ajax和c# web方法代码调用上载文件控件

使用ajax和c# web方法代码调用上载文件控件
EN

Stack Overflow用户
提问于 2017-12-26 17:15:33
回答 1查看 601关注 0票数 0

如何Ajax调用与上传文件控制C#和多一个参数请参阅下面的代码,并帮助我这一点,我想保存一个多参数的图像更新图像。请帮我实现这一目标。

我想用多个参数更新图像。

代码语言:javascript
复制
$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#码

代码语言:javascript
复制
[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 "";
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-26 18:44:16

您可能无法执行AJAX调用,提交文件,因为输入文件控件受到限制:出于安全考虑,浏览器不允许客户端脚本从用户的硬盘中选择文件。

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

同样,我怀疑您是否能够找到从JS获取文件内容的方法。可以使用Flash组件进行更多的控制,但这是额外的复杂性和依赖性。您可以轻松地将输入文件控件的样式设置为不同的外观(甚至不显示其按钮),就服务器端而言,您将不得不为HttpPost调整该方法,不接受任何arg(在那里您必须通过Request.Files找到它们)。

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

我希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47981657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档