Dropzone 服务器在 iOS 上以 0 代码响应

Dropzone server responded with 0 code on iOS

虽然也有类似的问题,但是我没能解决 iOS 上的 dropzone 'server responded with 0 code'。

我目前在我的 C# MVC 网络应用程序上使用 Dropzone 来上传视频和图像,它在桌面上的 Chrome 和 Firefox 以及 Chrome 上完美运行 Android,但出于某种原因,它不会在 iOS 上上传视频,或者只是用 0 代码错误响应,但它仍然会上传图像 none。

我在 web.config:

中设置了 maxAllowedContentLength
 <security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="524288000" />
  </requestFiltering>
</security>

我还在 dropzone 配置中指定了最大文件大小,并为接受的文件包含了不同的 mimeTypes。

<staticContent>
  <remove fileExtension=".mp4" />
  <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  <remove fileExtension=".flv" />
  <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
  <remove fileExtension=".m3u8" />
  <mimeMap fileExtension=".m3u8" mimeType="application/x-mpegURL" />
  <remove fileExtension=".ts" />
  <mimeMap fileExtension=".ts" mimeType="video/MP2T" />
  <remove fileExtension=".3gp" />
  <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
  <remove fileExtension=".mov" />
  <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
  <remove fileExtension=".avi" />
  <mimeMap fileExtension=".avi" mimeType="video/x-msvideo" />
  <remove fileExtension=".wmv" />
  <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
</staticContent>

有没有人能够使用 Safari 在 iOS 上解决此问题,我们将不胜感激!

编辑:

此外,我尝试增加 IIS 8 中的连接超时,并且还在 web.config.

中添加了 executionTimeout="180"

这个问题可能有多种原因。您上传的文件有多大?服务器执行脚本多长时间?允许上传的最大文件大小是多少? 我认为这主要是网络服务器设置的问题。

尝试增加 IIS 中的连接超时:转到您的网站(即默认网站)-> 高级设置 -> 连接超时。

如果这仍然不起作用,请参阅此 link 以获得一些想法:https://github.com/enyo/dropzone/issues/701

经过两天的挣扎,终于解决了我的问题。

我没有在黑暗中随机拍摄并猜测可能的解决方案,而是在 windows 上找到了 this 文章来调试 iOS,这样我就可以明白为什么视频没有上传了或者返回了哪个错误。

我发现在 iOS 上传递的文件扩展名在 xhr 请求中是大写的,例如my-video.MP4 和我的控制器中的 if 语句,其中将文件扩展名与小写字母进行比较,如下所示:

if (fileExtension == ".mp4" || fileExtension == ".mov" || fileExtension == ".avi" ||  fileExtension == ".wmv" || fileExtension == ".flv" || fileExtension == ".3gp")
   {
       //saving files onto the server
   }

我只是将文件扩展名转换为小写,似乎一切正常。我希望这可以帮助遇到类似问题的人。