首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视频文件传输空响应就绪状态0、状态0和statusText错误

视频文件传输空响应就绪状态0、状态0和statusText错误
EN

Stack Overflow用户
提问于 2016-12-16 09:23:50
回答 1查看 345关注 0票数 0

我在使用jquery ajax函数和php的post方法进行大文件传输时遇到了问题:

我有一个javascript函数:

代码语言:javascript
复制
function multimedia_update(){

if( contador_peticiones > 0 ){return;}

contador_peticiones++;

var formData = new FormData($('#sky-form')[0]);

$.ajax({
    xhr: function()
      {
        var xhr = new window.XMLHttpRequest();
        //Upload progress
        xhr.upload.addEventListener("progress", function(evt){
          if (evt.lengthComputable) {
            var percentComplete = ((evt.loaded / evt.total)*100)-2;
            //Do something with upload progress
            $("#progreso").css('width', percentComplete+'%');
            $("#progreso").html(percentComplete+'%');
          }
        }, false);

        xhr.addEventListener("error", onError, false);
        //Download progress
        xhr.addEventListener("progress", function(evt){
          if (evt.lengthComputable) {
            var percentComplete = ((evt.loaded / evt.total)*100)-2;
            //Do something with download progress
            $("#progreso").css('width', percentComplete+'%');
            $("#progreso").html(percentComplete+'%');
          }
        }, false);
        return xhr;
      },
    type:"POST",
    dataType:"JSONP",
    url:"drivers/multimedia-update.php",
    data:formData,
    //necesario para subir archivos via ajax
    cache: false,
    contentType: false,
    processData: false,
    timeout: 3600000,
    beforeSend: function(){
        $('.alert-info').fadeIn();
    },
    success: function(datos){
        var obj = jQuery.parseJSON( datos );
        switch( parseInt(datos[0].respuesta_final) ){
            case -1:
                alert('Error al guardar');
            break;
            case 0:
                alert('Hubo un problema al guardar alguna información, por favor notificar.');
            break;
            case 1:
                alert('Éxito al guardar.');
            break;
        }
        contador_peticiones = 0;
        multimedia_grid();
    },
    error: function(jqXHR, status, error) {
        mi_respuesta = jqXHR;
        console.log(jqXHR);
        console.log("espacio");
        console.log(status);
        console.log("espacio");
        //console.log(error);
        //alert("error en la petición 124");
    }
})
.done(function(){
    contador_peticiones = 0;
});

return false;

}

在PHP中,ftp客户端上传文件的代码(SubirArchivo函数):

代码语言:javascript
复制
if(isset ($_FILES['file2']['name']) ){
  if( $_FILES['file2']['name'] != '' ){
     $nombre_archivo_video = clean($_FILES["file2"]["name"]);
     $nombre_archivo_video = substr(md5(uniqid(rand())),0,4).'_'.$nombre_archivo_video;
     $directorio = '/video/repository/';
     $respuesta2 = SubirArchivo($nombre_archivo_video, $_FILES["file2"]["tmp_name"], $directorio);         
  } 
}

表单:

代码语言:javascript
复制
<form action="" id="sky-form" class="sky-form" enctype="multipart/form-data">
    <fieldset>
      <div class="row">
        <section>
         <p>Video</p>
         <p>Archivo en formato mp4</p>
         <label for="file" class="input input-file">
          <div class="button">
            <input id="file-4" type="file" class="file" name="file2" accept="video/mp4" onchange="this.parentNode.nextSibling.nextSibling.value = this.value" />Browse
          </div>
          <input type="text" placeholder="Video" readonly="" />
         </label>
        </section>
      </div>
    </fieldset>
</form>

我的php.ini配置:

代码语言:javascript
复制
max_execution_time = 0
max_input_time = -1
memory_limit = 512M
post_max_size = 368M
upload_max_filesize = 368M

问题是它不能处理大于80M或小于80M的文件,所以我不知道到底是什么问题。

我希望它至少在300M的限制下工作。

我一直在研究我的问题。我现在添加更多信息。当错误发生时,我在控制台中输出抛出我的XHR响应: readystate 0,status 0和statusText error。我已经尝试实现了以下答案:link1link2,但我仍然有同样的问题。我还在找...

更新:

然后按照这个主题,我一直在做测试,现在发现这不是文件大小的问题。显然文件有问题或错误,但是我仍然不知道确切的原因。当我试图加载一个docx文件或带有GD不支持的扩展名的图像时,我读到了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 10:00:01

好吧,我不知道这是否真的是一个答案。但过了一段时间,我可以证实,这个错误可能出现在共享服务器中,该服务器本应允许您自由配置文件传输参数,但它们不起作用。具体地说,这个问题发生在我的godaddy服务和一个叫做dissenynet的服务上。当公司雇佣了一台专用服务器(在我的例子中是IBM cloud)时,问题终于解决了,我必须挂载我自己的LAMP服务器,并能够配置必要的变量。我目前可以上传高达500MB的文件,没有问题。作为补充,这种类型的冲突可能会导致wordpress中的错误,如"HTTP错误“,因为传输没有正确处理。显然,wordpress的“特殊”服务已经解决了这一部分,因为由于wordpress给你的自由,这种类型的错误已经出现了很长一段时间。我希望这能有所帮助。

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

https://stackoverflow.com/questions/41175944

复制
相关文章

相似问题

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