我正在尝试使用带有处理程序(c#)的jquery ajax上传文件。 问题是,当我调用处理程序时,我得到了

context.Request.File.Count=0

这是aspx代码:

<!--aspx file code-->
<script language="javascript" type="text/javascript">
$().ready(function () 
{
    $('#save').click(function (e)
    {
        CalluploaderHandler();
    });
});

function CalluploaderHandler()
{
    $.ajax({
                type: "POST",
                url: "Services/UPloader.ashx",
                contentType: "application/json; charset=utf-8",
                success: OnComplete,
                error: OnFail
            });
    return false;
}

function OnComplete(result)
{
    alert('Success');
}

function OnFail(result)
{
    alert('Request failed');
}

</script>
    </head>
        <body>
            <form  enctype="multipart/form-data">
                <label for="file">
                Filename:</label>
                <input name="file" id="file" type="file">
                <input id="save" name="submit" value="Submit" type="submit">
            </form>
        </body>
    </html>    

c#代码处理程序:

/* handler*/
public void ProcessRequest(HttpContext context)
{
    string savedFileName = "";

    foreach (string file in context.Request.Files)
    {
        HttpPostedFile hpf = context.Request.Files[file] as HttpPostedFile;
        if (hpf.ContentLength == 0)
            continue;
        // savedFileName = context.Server.MapPath(Path.GetFileName(hpf.FileName));
        // hpf.SaveAs(savedFileName);
    }
    context.Response.Write(savedFileName);
}

===============>>#1 票数:3

您可以将此类代码添加到处理程序文件中。 然后你可以发布到这个网址(whateverroot / yourhandler.ashx)

内容类型应为“multipart / form-data”。 例如:如果您使用的是HTML表单标记,则enctype =“multipart / form-data”。

public void ProcessRequest(HttpContext context)
{
        var result = "0";
        try
        {
            if (context.Request.Files.Count > 0)
            {
                HttpPostedFile file = null;

                for (int i = 0; i < context.Request.Files.Count; i++)
                {
                    file = context.Request.Files[i];
                    if (file.ContentLength > 0)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        var path = Path.Combine(<somepath>, fileName);
                        file.SaveAs(path);
                        result = "1"; 
                    }
                }    

            }
        }
        catch { }
      context.Response.Write(result);
}

===============>>#2 票数:3

我认为问题出在contentType

contentType: 'multipart/form-data',

要么

contentType :'application/octet-stream';

有关更多信息,请参阅此帖子

使用jQuery.ajax发送multipart / formdata

===============>>#3 票数:2

你的代码......

$.ajax({
    type: "POST",
    url: "Services/UPloader.ashx",
    contentType: "application/json; charset=utf-8",
    success: OnComplete,
    error: OnFail
});

..缺少data参数。 它当前的编写方式,没有任何东西被发送到处理程序。

您需要使用data参数将文件传递给处理程序。 请浏览此链接: http//www.aspdotnet-suresh.com/2015/02/jquery-upload-images-files-without-page-refresh-postaback-in-aspnet.html

  ask by user1092626 translate from so

未解决问题?本站智能推荐:

2回复

将jQuery表单处理添加到现有php表单处理脚本的最佳方法?

这是我的第一篇文章,所以请耐心等待;) 我的问题: 我使用自己的MVC。 该模型(即上传图像)包含一个php函数,该函数验证文件是否存在,匹配允许的扩展范围和允许的大小,然后上传文件。 它返回一个带有文件名的数组,这样我就可以在下一页上向用户显示哪些文件已上传,哪些文件尚未上传。
2回复

文件直到处理程序的方法才到达

$(document).ready(function () { $("#Button1").click(function (evt) { var fileUpload = $('[id$=FileUpload1]')[0].value.spl
1回复

上传文件jquery

嗨,我叫卢卡! 我只是一个初学者,我完全坚持用jquery上传文件(或更多文件)。 我实际上试图用jQuery发布一种表单(输入字段如“ title”,“ text” ..加上文件上传一个),并且我可以将所有输入文件正确地发布在$ _POST数组中。 $ _FILES问题之一。 我使用
1回复

使用jQuery / Ajax的HTML文件上传不起作用

我正在尝试从Stack用户DannYo的注释中合并一些代码,但是他的代码版本似乎无法运行。 每次都会返回错误和“ beforesend”函数。 的HTML 的JavaScript 的PHP 出于测试目的, upload.php文件仅具有<?php echo "
1回复

使用Dropzone,jQuery和php上传表单-上传多个文件时没有单独的响应

如前所述,如果一次上传多个文件,我的响应有问题。 例如,我上传a.jpg和b.jpg 。 在下一步中,我上传b.jpg和c.jpg 。 我的PHP脚本检查名称是否重复,并在b.jpg找到一个名称,但作为响应,我将每个图像标记为 错误-文件已存在。 我无法分别回答。
1回复

如何设置上传目录? PHP,jQuery文件上传

我正在使用jquery文件上传来处理上传图像。 目前,上传的文件存储在/themes/mytheme/assets/plugins/file-upload/server/php/files/upload/test' which is controlled by the below code
2回复

jQuery验证图像上传文件类型

我有一个JQuery脚本,可以验证头像图像的上传,但是我需要它来防止上传除PNG,JPG和GIF图像以外的任何内容。 有什么办法可以实现到我的代码中吗? 这是代码:
1回复

基本的jQuery插件,用于基于Flash的单个文件上传?

我正在寻找一个简单的jquery插件来通过Flash上​​传文件。 我想要的是: 脚本解释来自服务器的XML响应的能力 我不想要的: 多文件上传 进度指示器和所有铃声
1回复

jquery.filer删除已经上传的文件

我的jquery.filer有问题! 那是我的文件管理器的“配置”。 现在,结果显示一切都完美显示。 所有已上传的图片将显示在网站上。 我尝试上传新文件并添加到数据库。 不幸的是, $ files = $ data ['data']仅返回新上传的文件。 这意味着
2回复

jQuery preventDefault后文件上传失败

我正在尝试使用JSP / JQuery上传文件,但是在提交之前我必须进行几次Ajax调用。 但是,在进行Ajax调用并提交表单之后,表单字段在服务器端是否为空? 如果我不调用e.preventDefault(),那么一切都可以,但是我需要预先提交Ajax调用! 谢谢