uploadify error HTTP: undefined? [duplicate]

2019-09-18 12:36发布

问题:

Possible Duplicate:
Uploadify: show error message from HTTP response

I am trying to get Uploadify to work in my asp.net mvc 3 app. I am getting an error( see title). This is my view:

@{
    ViewBag.Title = "Home Page";
}

  <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.3.2.min.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.0.min.js")"></script>

  <input type="file" name="fileInput1" id="fileInput1" />
    <span id="result"></span><a href="javascript:$('#fileInput1').uploadifyUpload();">Upload
        File</a>


<script type="text/javascript">
    $(document).ready(function () {

        $("#fileInput1").uploadify({
            uploader: '@Url.Content("~/Scripts/uploadify.swf")',
            script: '@Url.Action("Upload", "Upload")',
            fileDataName: 'file',
            buttonText: 'File Input 1...',
            multi: false,
            sizeLimit: 22222222222,
            simUploadLimit: 1,
            cancelImg: '@Url.Content("~/Scripts/cancel.png")',
            auto: false,
            onError: function (a, b, c, d) {
                if (d.status == 404)
                    alert("Could not find upload script. Use a path relative to: " + "<?= getcwd() ?>");
                else if (d.type === "HTTP") {
                    console.log("error " + d.type + ": " + d.status);
                    alert("error " + d.type + ": " + d.status);
                }
                else if (d.type === "File Size")
                    $("#result").html("file too big");
                //alert(c.name + " " + d.type + " Limit: " + Math.round(d.info / (1024 * 1024)) + "MB");
                else
                    alert("error " + d.type + ": " + d.text);
            },
            onComplete: function (event, queueId, fileObj, response, data) {
                alert(response);
            }
        });


    });

</script>

回答1:

The error you are getting most probably indicates that there is some problem with the server side action that is supposed to handle the file upload. I suspect that some exception is thrown.

Try with the following controller:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {
        if (file != null && file.ContentLength > 0)
        {
            var appData = Server.MapPath("~/app_data");
            var filename = Path.Combine(appData, Path.GetFileName(file.FileName));
            file.SaveAs(filename);
        }
        return Json(true);
    }
}

Also try with a more recent version of jquery and uploadify. I have just tested with jquery 1.5.1 and uploadify 2.1.4 with the exact same code you have posted and with the controller action I showed and it worked perfectly fine.

Here's my Index.cshtml view:

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.4.js")"></script>

<input type="file" name="fileInput1" id="fileInput1" />
<span id="result"></span>
<a href="javascript:$('#fileInput1').uploadifyUpload();">Upload File</a>

<script type="text/javascript">
    $(document).ready(function () {
        $("#fileInput1").uploadify({
            uploader: '@Url.Content("~/Scripts/uploadify.swf")',
            script: '@Url.Action("Upload", "Home")',
            fileDataName: 'file',
            buttonText: 'File Input 1...',
            multi: false,
            sizeLimit: 22222222222,
            simUploadLimit: 1,
            cancelImg: '@Url.Content("~/Scripts/cancel.png")',
            auto: false,
            onError: function() {
                alert('some error occurred. Sorry');
            },
            onComplete: function (event, queueId, fileObj, response, data) {
                alert(response);
            }
        });
    });
</script>