我正在尝试在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);
答案 0 :(得分:7)
您应该知道base64编码的数据将比原始数据大小大约37%。考虑到您正在处理大文件而base64编码导致内存不足错误,我不会用base64对其进行编码。
一次读取大文件不是一个好主意。相反,我建议将您的文件流式传输到服务器。使用此方法,将以块的形式读取和传输文件,防止内存不足错误并避免较慢设备上的滞后。例如,您可以使用FileTransfer
中启用了chunkedMode
的{{1}}对象执行此操作。
推荐方法(改编自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”