使用FormData在服务器上未收到文件

时间:2017-01-06 11:39:50

标签: javascript php ajax xmlhttprequest form-data

我正在将包含文件的表单上传到我的服务器,该服务器运行验证并返回成功或失败。

使用Ajax和FormData发送表单。

在我的测试服务器上收到所有数据,包括文件。但是,在我的实时服务器上,它返回说该文件丢失。

如果我在两个环境中询问FormData对象,那么该文件就存在,它似乎永远不会进入服务器。

显然我删除了几个项目并替换为* s,并且页面也生成了帖子网址。

HTML:

<form method="POST" action="https://******" accept-charset="UTF-8" enctype="multipart/form-data">
<div class="row">
    <div class="col-md-6">
       <div class="form-group" id="sport_types">
           <label for="match">What match is this video from</label>
           <select id="event_select" name="match" class="form-control">
               <option value="">Select Match</option>
               <option value="9024802136436009">Rugby Newers</option>
            </select>
        </div>
        <div class="form-group">
           <label for="video">Choose your video</label><br>
           <div class="fileUpload btn btn-info">
              <span id="upload_text">Choose Video</span>
              <input id="imageLoader" accept="video/*" type="file" name="video">
            </div>
             <div id="fileName"></div>
        </div>
        <div class="form-group">
           <label for="video_name">Enter a short description of the video</label>
           <input name="video_name" type="text" class="form-control" placeholder="Video Description" value="">
        </div>
        <input type="hidden" name="video_id" value="0">
    </div>
</div>

<div id="form_buttons_image">
    <a class="btn btn-default" href="/video/1451290748440885">Cancel</a>
        <input id="submit" type="submit" class="btn btn-info  hidden ">
        <span id="uploading_feedback" class="hidden">Uploading Video...</span>
</div>

<div class="row">
    <div class="col-md-6">
        <div class="progress hidden">
            <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
                <span id="progress_label">0%</span>
            </div>
        </div>
    </div>
</div>

</form>

的Javascript:

    $('form').submit( function( e ) {
    formData = new FormData( this );
    $.ajax({
        xhr: function() {
            var xhr = new window.XMLHttpRequest();

            xhr.upload.addEventListener("progress", function(evt) {
                if (evt.lengthComputable) {
                   var percentComplete = evt.loaded / evt.total;
                   percentComplete = parseInt(percentComplete * 100);
                   percentShown = percentComplete*0.98;
                   showProgress(percentShown);
                }
            }, false);

            return xhr;
        },
        url: '{{Request::url()}}/process',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false
    }).done(function(data) {
        if (data[0] == 0) {
            console.log( data[1][0] );
            console.log( data[2] );
            $('#feedback').html(data[1][0]).removeClass("hidden");
            $('#key_video').removeClass("hidden");
            $("#uploading_feedback").addClass("hidden");
            $(".progress").addClass("hidden");
        }
        else if (data[0] == 1) { 
            window.location.assign(data[1]);
        }
    });
    e.preventDefault();
});

1 个答案:

答案 0 :(得分:-1)

如果您的代码在测试服务器上工作,那么只需检查文件夹权限和文件夹位置。许可应该是777。

由于