2017-08-27 44 views
3

クライアントがAJAX POSTリクエストでサーバーにファイルをアップロードした後、サーバーがそのファイルをクラウド(曇り)、アップロード完了後にAJAXリクエストに応答します。2分間の応答を待ってからajax net :: ERR_EMPTY_RESPONSE - node.jsサーバー

ファイルのアップロードに2分以上かかる場合があります(エラーが発生するまでリクエストが開始されてからタイムアウトします)。

アップロードが2分未満であれば問題なく動作しますが、問題なくエラーが発生してから2分以上かかるアップロードは完了します。クライアントは2分の時点で空の応答を受信します。

サーバーサイドコード:

router.route('/posts').post(middleware.isLoggedIn, function (req, res) { 
    var form = new multiparty.Form() 
    form.parse(req, function (err, fields, files) { 
    if (err) return err 
    cloudinary.v2.uploader.upload(files.content[0].path, { resource_type: 
    'auto' }, function (err, result) { 
     if (err) return err 
     console.log(result) 
     res.json({ result: result }) 
    }) 
}) 

クライアント側コード:あなたはnodejs要求の内部タイムアウトに実行されているよう

function newPost (type, title, content) { 
    if (type === 'image') { 
    $('#newImageForm').addClass('loading') 
    } else if (type === 'video') { 
    $('#newVideoForm').addClass('loading') 
    } else if (type === 'gif') { 
    $('#newGifForm').addClass('loading') 
    } 
    var form = new FormData() 
    form.append('content', content) 
    form.append('type', type) 
    form.append('title', title) 
    $.ajax({ 
    type: 'POST', 
    url: '/posts', 
    data: form, 
    processData: false, 
    contentType: false, 
    timeout: 0, 
    success: function (response) { 
     if (type === 'image') { 
     $('#newImageForm').removeClass('loading') 
     $('#newImageForm').fadeOut() 
     $('#imageTitle').val('') 
     $('#image').val('') 
     } else if (type === 'video') { 
     $('#newVideoForm').removeClass('loading') 
     $('#videoTitle').val('') 
     $('#video').val('') 
     $('#newVideoForm').fadeOut() 
     } else if (type === 'gif') { 
     $('#newGifForm').removeClass('loading') 
     $('#gifTitle').val('') 
     $('#gif').val('') 
     $('#newGifForm').fadeOut() 
     } 
     successMessage(response._id) 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     errorMessage() 
    } 
    }) 
} 

答えて

関連する問題