我尝试使用cordova-plugin-file-transfer将我的图像在base64上传到我的服务器,直到现在它还没有工作。我的代码是这样的:
photoBase64 = photoBase64.replace('data:image/png;base64,', '');
var url = "http://MYURL.com/path";
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = "photoName.png";
options.mimeType = "image/png";
var ft = new FileTransfer();
ft.upload(photoBase64,
encodeURI(url),
function(result) {
console.log("Code = " + result.responseCode);
console.log("Response = " + result.response);
console.log("Sent = " + result.bytesSent);
resolve("OK");
},
function(error) {
alert("An error has occurred: Code = " + error.code);
console.error("ERROR", error);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
reject("ERROR");
},
options);
我使用此代码收到以下错误:
如何使用cordova-plugin-file-transfer上传图像base64?
提前致谢!
答案 0 :(得分:5)
我已经晚了一年,但我只是通过反复试验找到答案:
您必须离开"数据:image / png; base64,"在字符串中。我假设没有这种格式,它不是有效的网址。
特别是在你的情况下,删除这一行:
photoBase64 = photoBase64.replace('data:image/png;base64,', '');
让我的上传工作真的很简单。
答案 1 :(得分:0)
文件传输插件不接受Base64字符串。你必须使用文件的位置(file :: // android / etc)。有关File plugin获取文件的更多信息(此插件随filetransfer插件自动安装)在这里:
https://github.com/apache/cordova-plugin-file
如果您真的想要使用base64字符串,则必须使用$ http.post并在接收端写一个api来重新创建文件