通过HTTP将二进制数据从Qt发送到AngularJs

时间:2017-12-15 12:45:00

标签: c++ angularjs qt http

QString path = "my.file";
//QString zipcmd = QString("tar -czf %1.tar.gz %1").arg(path);
//int err = system(zipcmd.toUtf8().data());
// path += ".tar.gz";
QFile file(path);
if (!err && QFile::exists(path) && file.open(QIODevice::ReadOnly)) {
  body = file.readAll();
  file.close();
  status = QHttpResponse::STATUS_ACCEPTED;
} 

我是如何处理回复的:

$http({ method: 'GET', url: 'myurl', respponseType: 'blob' })
              .then(function success(response) {
              var blob = new Blob([response.data],{type: 'application/octet-stream', charset: 'charset=utf-8'});
              var url = URL.createObjectURL(blob);
              var a = document.createElement('a');
              a.download = "myfilename";
              a.href = url;
              a.click();
            });

当我发送简单的文本文件时,每件事都可以。 但是当我尝试将相同的文件打包到tar.gz时,我收到的数据不正确。我尝试使用toBase64atob,将respponseType更改为arraybuffer和MIME类型,但没有成功。

AngularJS 1.4.9和Qt 5.4。任何帮助,将不胜感激。 也许有另一种方式来传输文件?

0 个答案:

没有答案