0

次のように使用すると、XMLHttpRequest2 リクエストで何が起こるかを理解しようとしています。

xhr.send(ファイル)

ここの流れは?最初に一時データをどこかにアップロードしてから投稿しますか? 私の経験では、ファイルが100%のアップロードに達したときにのみリクエストが送信されます(どこにアップロードしますか??)

理由が見つからない問題に直面しています。

アップロードは 20 MB のサイズのようなファイルでうまく機能しますが、50 MB に近づくとすぐに、Bad Request で失敗し、サーバーはアプリケーションからの要求を取得しません。

これは私のコードで、html5rocks チュートリアルに従っています:

var xhr = new XMLHttpRequest();
xhr.open('POST', "foo url goes here");
xhr.send(file);

私が言ったように、これは小さなファイルでは機能しますが、50MB のような大きなファイルでは失敗し、サーバーに到達しません。

これは、通常の AJAX 投稿でも機能しません。同じ問題です。

WCF レスト サービスにポーズをとっています。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Ajax upload form</title>
  <script src="app/js/lib/jquery-2.0.2.min.js" type="text/javascript"></script>
  <script type="text/javascript">
  $(function(){
    $(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'myurl',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });
});
    function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}

  })
  </script>
</head>
<body>
    <form enctype="multipart/form-data">
  <input name="file" type="file" />
  <input type="button" value="Upload" />
</form>
<progress></progress>
</body>
</html>
4

0 に答える 0