通过dropzone.js上传文件会出错,请求格式无效:multipart / form-data;

时间:2014-04-14 10:13:57

标签: c# web-services wcf web dropzone.js

我正在使用dropzone将多个文件上传到Web服务,但是我一直在收到错误:

System.InvalidOperationException: Request format is invalid: multipart/form-data;      boundary=----------WmBuH1mgT5UyAi5sEK0qnm.
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

这是我的C#功能

 public bool InvokeTest(byte[] binaryarray, string docname)

因为我试图避免使用Page_Load并尝试在没有表单提交的情况下使其工作,并且仅使用jQuery函数:

$('#dropzone').dropzone({
        url: '_upload/uploader.asmx/InvokeTest',
        enctype: 'multipart/form-data',
        maxFilesize: 1,
        paramName: 'photos',
        addRemoveLinks: true,
        enqueueForUpload: false,
    });

我的表单提交看起来很简单:

<form id="Form1" action="_upload/uploader.asmx/InvokeTest" method="post" enctype="multipart/form-data" runat="server" class="dropzone">

我的问题: 是否可以使用dropzone而不使用&#34; form&#34;并通过jQuery直接发布它,避免我在webservice上的讨厌错误......

期待任何想法和/或建议,

由于

1 个答案:

答案 0 :(得分:2)

Dropzone.js与webservice&amp;更具体地说,它可以用于场景,其中

  • 您正在使用表单发布到WebServiceURL
  • 您要上传多张图片

,根据你的问题判断,你原本打算这样做。

以下是这种情况的详细示例。虽然在示例中ServiceStack(而不是WCF)被用作WebService:[ Uploading images using ServiceStack and Dropzone ]

这表明您的WebService c#函数未正确设置以处理发布请求。

另一个重要的dropzone配置是使用parallelUploads = 1.如果多个上传要在服务器端实现上访问相同的memoryStream,我已经看到这是一个问题。

$('#dropzone').dropzone( {
            parallelUploads: 1,
            uploadMultiple: true,
            autoProcessQueue: true
        });