最佳答案
我有一个基本的 HTML 表单,可以从中获取一些在 Firebug 中检查的信息。
我唯一的问题是,我试图在将文件数据发送到服务器之前对其进行 < strong > base64 编码,因为要将文件数据以该格式保存到数据库,服务器就必须将其发送到服务器。
<input type="file" id="fileupload" />
And in 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);
For IE Support.
这在 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。”
但是这只会在对 UTF _ 8方法执行 base64编码之前返回一个错误(或者一个空字符串)
var encoded = Base64.encode(file);