Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将HTML5 dropbox转换为文件浏览_Javascript_Html - Fatal编程技术网

Javascript 将HTML5 dropbox转换为文件浏览

Javascript 将HTML5 dropbox转换为文件浏览,javascript,html,Javascript,Html,我非常不熟悉HTML5,jsp excel阅读器可以在这里找到: 据我所知,drop box需要HTML5,而我使用的浏览器不支持HTML5。(我的客户也没有。如果可以的话,我会告诉他们只需将浏览器更新到更现代的版本) 因此,我现在关心的是将文件放置框转换为文件浏览表单,例如: <form enctype="multipart/form-data" action="action" method="post"> <input type="hidden" name="M

我非常不熟悉HTML5,jsp excel阅读器可以在这里找到:

据我所知,drop box需要HTML5,而我使用的浏览器不支持HTML5。(我的客户也没有。如果可以的话,我会告诉他们只需将浏览器更新到更现代的版本)

因此,我现在关心的是将文件放置框转换为文件浏览表单,例如:

<form enctype="multipart/form-data" 
  action="action" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
  <table width="600">
  <tr>
  <td>Names file:</td>
  <td><input type="file" name="file" /></td>
  <td><input type="submit" value="Upload" /></td>
  </tr>
  </table>
  </form>

文件名:
下面是包含HTML5框的index.html。有人能帮忙把盒子翻译成文件浏览器吗?让它做同样的事情

<!DOCTYPE html>
<style>
#drop{
border:2px dashed #bbb;
-moz-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
padding:25px;
text-align:center;
font:20pt bold,"Vollkorn";color:#bbb
}
#b64data{
width:100%;
}
</style>
<b>JS-XLS Live Demo</b><br />
<input type="radio" name="format" value="csv" checked> CSV<br>
<input type="radio" name="format" value="json"> JSON<br>
<input type="radio" name="format" value="form"> FORMULAE<br>

<div id="drop">Drop an XLS file here to see sheet data.</div>
<!--
<textarea id="b64data">... or paste a base64-encoding here</textarea>
<input type="button" id="dotext" value="Click here to process the base64 text" onclick="b64it();"/>
-->
<pre id="out"></pre>
<br />
<script src="xls.js"></script>
<script>
function get_radio_value( radioName ) {
var radios = document.getElementsByName( radioName );
for( var i = 0; i < radios.length; i++ ) {
if( radios[i].checked ) {
return radios[i].value;
}
}
}

function to_json(workbook) {
var result = {};
workbook.SheetNames.forEach(function(sheetName) {
var roa = XLS.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
if(roa.length > 0){
result[sheetName] = roa;
}
});
return result;
}

function to_csv(workbook) {
var result = [];
workbook.SheetNames.forEach(function(sheetName) {
var csv = XLS.utils.make_csv(workbook.Sheets[sheetName]);
if(csv.length > 0){
result.push("SHEET: " + sheetName);
result.push("");
result.push(csv);
}
});
return result.join("\n");
}

function to_formulae(workbook) {
var result = [];
workbook.SheetNames.forEach(function(sheetName) {
var formulae = XLS.utils.get_formulae(workbook.Sheets[sheetName]);
if(formulae.length > 0){
result.push("SHEET: " + sheetName);
result.push("");
result.push(formulae.join("\n"));
}
});
return result.join("\n");
}

var tarea = document.getElementById('b64data');
function b64it() {
var cfb = XLS.CFB.read(tarea.value, {type: 'base64'});
var wb = XLS.parse_xlscfb(cfb);
process_wb(wb);
}

function process_wb(wb) {
var output = "";
switch(get_radio_value("format")) {
case "json":
output = JSON.stringify(to_json(wb), 2, 2);
break;
case "form":
output = to_formulae(wb);
break;
default:
output = to_csv(wb);
}
if(out.innerText === undefined) out.textContent = output;
else out.innerText = output;
}

var drop = document.getElementById('drop');
function handleDrop(e) {
e.stopPropagation();
e.preventDefault();
var files = e.dataTransfer.files;
var i,f;
for (i = 0, f = files[i]; i != files.length; ++i) {
var reader = new FileReader();
var name = f.name;
reader.onload = function(e) {
var data = e.target.result;
var cfb = XLS.CFB.read(data, {type: 'binary'});
//var arr = String.fromCharCode.apply(null, new Uint8Array(data));
//var cfb = XLS.CFB.read(btoa(arr), {type: 'base64'});
var wb = XLS.parse_xlscfb(cfb);
process_wb(wb);
};
reader.readAsBinaryString(f);
//reader.readAsArrayBuffer(f);
}
}

function handleDragover(e) {
e.stopPropagation();
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
}

if(drop.addEventListener) {
drop.addEventListener('dragenter', handleDragover, false);
drop.addEventListener('dragover', handleDragover, false);
drop.addEventListener('drop', handleDrop, false);
}
</script>

#下降{
边框:2个虚线#bbb;
-moz边界半径:5px;
-webkit边界半径:5px;
边界半径:5px;
填充:25px;
文本对齐:居中;
字体:20磅粗体,“沃尔科恩”;颜色:#bbb
}
#B64数据{
宽度:100%;
}
JS-XLS现场演示
CSV
JSON
公式
在此处放置XLS文件以查看图纸数据。
函数get_radio_值(radioName){ var radios=document.getElementsByName(radioName); 对于(变量i=0;i0){ 结果[sheetName]=roa; } }); 返回结果; } 函数到_csv(工作簿){ var结果=[]; 工作簿.SheetNames.forEach(函数(sheetName){ var csv=XLS.utils.make_csv(workbook.Sheets[sheetName]); 如果(csv.length>0){ 结果。推送(“工作表:+工作表名称”); 结果:推送(“”); 结果推送(csv); } }); 返回结果。join(“\n”); } 函数到_公式(工作簿){ var结果=[]; 工作簿.SheetNames.forEach(函数(sheetName){ var formulas=XLS.utils.get_公式(workbook.Sheets[sheetName]); 如果(公式长度>0){ 结果。推送(“工作表:+工作表名称”); 结果:推送(“”); 结果.push(公式.join(“\n”)); } }); 返回结果。join(“\n”); } var tarea=document.getElementById('b64data'); 函数b64it(){ var cfb=XLS.cfb.read(tarea.value,{type:'base64'}); var wb=XLS.parsexlscfb(cfb); 过程wb(wb); } 功能流程(wb){ var输出=”; 开关(获取无线电值(“格式”)){ 案例“json”: output=JSON.stringify(to_JSON(wb),2,2); 打破 案例“表格”: 输出=到_公式(wb); 打破 违约: 输出=输出至_csv(wb); } 如果(out.innerText==未定义)out.textContent=输出; else out.innerText=输出; } var drop=document.getElementById('drop'); 函数handleDrop(e){ e、 停止传播(); e、 预防默认值(); var files=e.dataTransfer.files; 变量i,f; 对于(i=0,f=files[i];i!=files.length;++i){ var reader=new FileReader(); var name=f.name; reader.onload=函数(e){ var数据=e.target.result; var cfb=XLS.cfb.read(数据,{type:'binary'}); //var arr=String.fromCharCode.apply(null,新Uint8Array(数据)); //var cfb=XLS.cfb.read(btoa(arr),{type:'base64'}); var wb=XLS.parsexlscfb(cfb); 过程wb(wb); }; reader.readAsBinaryString(f); //reader.readAsArrayBuffer(f); } } 功能手柄(e){ e、 停止传播(); e、 预防默认值(); e、 dataTransfer.dropEffect='copy'; } if(drop.addEventListener){ drop.addEventListener('dragenter',handleDragover,false); drop.addEventListener('dragover',handleDragover,false); drop.addEventListener('drop',handleDrop,false); }
问题不在于拖放。问题是,如果浏览器对HTML5的支持不够好,它可能不支持文件API(给定代码中的FileReader对象和相关内容),因此它将根本无法读取本地文件,即使它们是用老式的文件浏览器选择的。老实说,除了将带有文件的操作移动到服务器端,我看不到简单的解决方案