我有一个基本的HTML表单,可以从中获取一些正在Firebug中检查的信息。
我唯一的问题是,在将文件数据发送到服务器之前,我试图对文件数据进行base64编码,然后将其以该格式保存到数据库。
<input type="file" id="fileupload" />
在Javascript + jQuery中:
var file = $('#fileupload').attr("files")[0];
我有一些基于可用javascript的操作:.getAsBinary()、. getAsText()、. getAsTextURL
但是,这些都不返回可插入的可用文本,因为它们包含不可用的“字符” -我不想在上传的文件中出现“回发”,并且我需要针对特定对象的多种形式,因此我很重要获取文件并以这种方式使用Javascript。
我应该如何以一种可以使用广泛使用的Javascript base64编码器的方式获取文件?
谢谢
更新-从这里开始赏金,需要跨浏览器支持!!!
这是我的位置:
<input type="file" id="fileuploadform" />
<script type="text/javascript">
var uploadformid = 'fileuploadform';
var uploadform = document.getElementById(uploadformid);
/* method to fetch and encode specific file here based on different browsers */
</script>
跨浏览器支持的几个问题:
var file = $j(fileUpload.toString()).attr('files')[0];
fileBody = file.getAsDataURL(); // only would works in Firefox
此外,IE不支持:
var file = $j(fileUpload.toString()).attr('files')[0];
所以我必须替换为:
var element = 'id';
var element = document.getElementById(id);
对于IE支持。
此功能可在Firefox,Chrome和Safari中使用(但无法正确编码文件,或者至少在文件发布后无法正确显示)
var file = $j(fileUpload.toString()).attr('files')[0];
var encoded = Btoa(file);
也,
file.readAsArrayBuffer()
似乎仅在HTML5中受支持?
很多人建议: http : //www.webtoolkit.info/javascript-base64.html
但这只会在base64编码之前在UTF_8方法上返回en错误?(或空字符串)
var encoded = Base64.encode(file);