我试图写一个脚本上传多个图像文件将检查MD5哈希为每个图像文件begore上传到服务器安全的方法,以基于JavaScript的MD5值传递给PHP
代码片段:
<script type="text/javascript">
var log = document.getElementById("hash_log");
var hash_array = [];
$("#screenshot").change(function() {
handleFiles(this.files);
});
function handleFiles(files) {
for (var i=0; i<files.length; i++) {
var reader = new FileReader();
reader.onload = function(event) {
var binary = event.target.result;
var md5_hash = calcMD5(binary).toString()
hash_array[i]= md5_hash; // array to store hash value
registerLog(hash_array[i]); // to show hash value, just for testing purpose
setCookie('cookie_'+i, hash_array[i]); // generate cookie in incremetal order, issue line
};
reader.onerror = function() {
console.error("Could not read the file");
};
reader.readAsBinaryString(files.item(i));
}
}
// for geneaarted hash values
function registerLog(str, className) {
var elem = document.createElement("div");
elem.innerHTML = str;
elem.className = "alert-message" + (className ? " " + className : "");
log.appendChild(elem);
}
// function for setting cookies...
function setCookie(name, value) {
var argv = setCookie.arguments;
var argc = setCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape(value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
</script>
现在散列图像文件生成细,但为了比较用于服务器端处理这些值
我使用cookie来传递值
现在第16行,用于设置cookie代码:
setCookie('cookie_'+i, hash_array[i]);
所以cookie的名称应该是渐进的订单,如:COOKIE1,COOKIE2,cookie3等等... 不过这台仅通过散列cookie3值
理由:里面的文件读取功能的I已被设置为3,如果3个文件生成,因为它设为总没有选择要上传
所以整体文件,请建议如何解决增加cookie名称值。
我坚持了下来2天了,试了很多方法,但似乎是唯一的办法就是现在发布的情况..
也:有没有更好的方式来传递变量值到PHP除Cookie或隐藏的输入变量外。
请原谅问题标题作为一个适当的人没有在发布时罢工 – madhvik 2014-11-23 09:56:50