2017-08-27 3 views
3

J'ai ce code où le client télécharge un fichier sur le serveur via une requête AJAX POST puis le serveur télécharge ce fichier sur un nuage (cloud), et répond à la requête AJAX une fois le téléchargement terminé.ajax net :: ERR_EMPTY_RESPONSE après avoir attendu une réponse pendant 2 minutes - serveur node.js

Le problème se produit lorsque le téléchargement du fichier prend plus de 2 minutes (je l'ai chronométré, depuis le début de la requête jusqu'à ce que l'erreur se produise).

Tout fonctionne correctement si le téléchargement prend moins de 2 minutes, et les téléchargements qui prennent plus de 2 minutes sont terminés après l'erreur sans problème. mais le client reçoit la réponse vide à la marque de 2 minutes.

code côté serveur:

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 }) 
    }) 
}) 

code côté client:

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() 
    } 
    }) 
} 

Répondre