如何在node.js上传文件时中断



我在控制器中有一个代码,如下所示:

BASE.APP.post('/uploadFile/:request/:file', function(req, res, next) {
  var url = req.usersession.webipAddress;
  var path = 'uploads/' + req.params.file;
  var formData = new BASE.FormData();
  formData.append('fileNameUnique', req.params.file);
  formData.append('file', BASE.FS.createReadStream(path));
  //  console.log(formData);

  formData.submit(url + '/service/uploadFile/', function(err, response) {
    // console.log(response.statusCode);
    res.send(response.statusCode);
  });
});

如果状态=="取消",我想中断文件上传,是不是可能?

如果状态 == "取消",请尝试以下操作:

req.pause()
res.status = 400;
res.end('Upload cancelled');

我对你的代码工作方式或工作流程知之甚少。这是一个最有可能起作用的通用解决方案。如果您想要更具体的 soln,请在问题中添加更多代码。

try {
    if (status === 'cancel') {
        throw new Error("Stopping file upload...");
    }
} catch (e) {
    res.end("the upload was cancelled because of error: " + e.toString());
}

保存从formData.submit返回的值,并将其用作调用request.abort的句柄。

例如

BASE.APP.post('/uploadFile/:request/:file', function(req, res, next) {     
  var formData = new BASE.FormData();
  // ...
  var formSubmitRequest = formData.submit(url + '/service/uploadFile/', function(err, response) {
    res.send(response.statusCode);
  });
  statusChanger.on('status-change', function(status) {
    if (status === "cancel" && formSubmitRequest) {
      formSubmitRequest.abort();
      res.send(524);
    }
  });
}

从 https://github.com/form-data/form-data:

对于更高级的请求操作,submit() 方法返回 http。客户端请求对象

从 https://nodejs.org/api/http.html#http_request_abort:

request.abort()#

添加于:v0.3.8

将请求标记为中止。调用 this 将导致删除响应中的剩余数据并销毁套接字。

相关内容

  • 没有找到相关文章

最新更新