我有一个基本的 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 方法上返回错误?(或空字符串)
var encoded = Base64.encode(file);