Phonegap android文件到base64内存不足错误

时间:2014-04-08 11:50:52

标签: android cordova

我正在尝试在Android上获取视频文件,将其转换为base64编码并上传。

当文件大于5Mb时, android 中出现内存不足错误,但ios也会转换大文件。只有在android我才遇到这个错误......

这是我的代码:

var reader = new FileReader();
reader.onload = function(evt1) {}, reader.onloadend = function(evt) {
    console.log("read success");
    console.log(evt.target.result);
};
reader.readAsDataURL(file);

2 个答案:

答案 0 :(得分:7)

  1. 您应该知道base64编码的数据将比原始数据大小大约37%。考虑到您正在处理大文件而base64编码导致内存不足错误,我不会用base64对其进行编码。

  2. 一次读取大文件不是一个好主意。相反,我建议将您的文件流式传输到服务器。使用此方法,将以块的形式读取和传输文件,防止内存不足错误并避免较慢设备上的滞后。例如,您可以使用FileTransfer中启用了chunkedMode的{​​{1}}对象执行此操作。

  3. 推荐方法(改编自documentation):

    FileUploadOptions

答案 1 :(得分:1)

在服务器端创建php.ini文件并添加以下代码。您可以增加upload_max_filesize

register_globals = on

display_errors = Off

error_reporting = E_ALL& E_NOTICE& E_WARNING& E_DEPRECATED

upload_max_filesize = 50M

memory_limit = 500M

max_execution_time = 1800

post_max_size = 120M

session.gc_maxlifetime = 86400

error_log = /var/log/php-scripts.log

#safe_mode =关闭 #safe_mode_exec_dir =“storage_dir_path” #open_basedir =“storage_dir_path”