我正在尝试将 Excel 文件从我的本地计算机发送到我们的网络服务。
在我看来,我使用输入类型“文件”来选择文件,然后将该文件发送到此 Web 服务调用:
uploadArticles: function (file, filename) {
var fd = new FormData();
fd.append('UPLOADFILE', file);
fd.append('APPNAME', 'MY_APP');
fd.append('PRGNAME', 'UPLOAD_EXCEL');
fd.append('SESSIONID', '12345');
fd.append('UPDATE', 'Y');
fd.append('UPLOADFILENAME', filename);
fd.append('ARGUMENTS', 'SESIONID,UPLOADFILE,UPLOADFILENAME,UPDATE');
$http.post(MAGIC_URL, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
}).success(function (response) {
console.log('SUCCESS! ', response);
}).error(function (response) {
console.log('ERROR! ', response);
});
}
我们正在使用 uniPaaS 获取 ARGUMENTS 文件 blob 并将其写入我们服务器上的目录。它工作正常,但是当我尝试打开文件本身时,blob 文本正在写入 Excel 文件中。就好像文件没有被正确解释一样。
这是 Excel 文件内部内容的示例:
data:text/rtf;base64,e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNDA0XGNvY29hc3VicnRmNDcwCntcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CntcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMDgwMFx2aWV3aDg0MDBcdmlld2tpbmQwClxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAoKXGYwXGZzMjQgXGNmMCB0ZXN0IDEyMzR9
我是否不正确地处理此文件上传?
编辑:
我能够解决这个问题。uniPaaS 能够将 Base64 转换为 Blob,但无论出于何种原因,这都无法正常工作。我能够使用 JavaScript 将这个 Base64 转换为 Blob,我将 Blob 发送到 uniPaaS,并且文件被正确写入。
对于遇到此问题的其他任何人,请参阅此讨论:Creating a Blob from a base64 string in JavaScript