多文件上传:Javascript和SQL插入
使用以下HTML输入和Javascript,用户最多可以向一个页面添加3个文件 文件上载输入的代码:多文件上传:Javascript和SQL插入,javascript,oracle,plsql,oracle-apex,Javascript,Oracle,Plsql,Oracle Apex,使用以下HTML输入和Javascript,用户最多可以向一个页面添加3个文件 文件上载输入的代码: <input id="my_file_element" type="file" name="file_1" > <input type="submit"> Files: <div id="files_list"></div> <script> var multi_selector = new MultiSele
<input id="my_file_element" type="file" name="file_1" >
<input type="submit">
Files:
<div id="files_list"></div>
<script>
var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 3 );
multi_selector.addElement( document.getElementById( 'my_file_element' ) );
</script>
文件夹:
var multi_selector=新的MultiSelector(document.getElementById('files_list'),3);
multi_selector.addElement(document.getElementById('my_file_element');
HTML标题中的JavaScript:
<script language="javascript">
function MultiSelector( list_target, max ){
this.list_target = list_target;
this.count = 0;
this.id = 0;
if( max ){
this.max = max;
} else {
this.max = -1;
};
this.addElement = function( element ){
if( element.tagName == 'INPUT' && element.type == 'file' ){
element.name = 'file_' + this.id++;
element.multi_selector = this;
element.onchange = function(){
var new_element = document.createElement( 'input' );
new_element.type = 'file';
this.parentNode.insertBefore( new_element, this );
this.multi_selector.addElement( new_element );
this.multi_selector.addListRow( this );
this.style.position = 'absolute';
this.style.left = '-1000px';
};
if( this.max != -1 && this.count >= this.max ){
element.disabled = true;
};
this.count++;
this.current_element = element;
} else {
alert( 'Error: not a file input element' );
};
};
this.addListRow = function( element ){
var new_row = document.createElement( 'div' );
var new_row_button = document.createElement( 'input' );
new_row_button.type = 'button';
new_row_button.value = 'Delete';
new_row.element = element;
new_row_button.onclick= function(){
this.parentNode.element.parentNode.removeChild( this.parentNode.element );
this.parentNode.parentNode.removeChild( this.parentNode );
this.parentNode.element.multi_selector.count--;
this.parentNode.element.multi_selector.current_element.disabled = false;
return false;
};
new_row.innerHTML = element.value;
new_row.appendChild( new_row_button );
this.list_target.appendChild( new_row );
};
};
</script>
函数多选择器(列表\目标,最大值){
this.list\u target=list\u target;
此值为0.count;
此参数为0.id;
如果(最大值){
this.max=max;
}否则{
这个最大值=-1;
};
this.addElement=函数(元素){
if(element.tagName=='INPUT'&&element.type=='file'){
element.name='file_'+this.id++;
element.multi_选择器=此;
element.onchange=函数(){
var new_element=document.createElement('input');
new_element.type='file';
this.parentNode.insertBefore(新的_元素,this);
此.multi_选择器.addElement(新_元素);
this.multi_selector.addListRow(this);
this.style.position='绝对';
this.style.left='-1000px';
};
如果(this.max!=-1&&this.count>=this.max){
element.disabled=true;
};
这个.count++;
this.current_元素=元素;
}否则{
警报(“错误:不是文件输入元素”);
};
};
this.addListRow=函数(元素){
var new_row=document.createElement('div');
var new_row_button=document.createElement('input');
new_row_button.type='button';
new_row_button.value='Delete';
new_row.element=元素;
新建行按钮。onclick=function(){
this.parentNode.element.parentNode.removeChild(this.parentNode.element);
this.parentNode.parentNode.removeChild(this.parentNode);
this.parentNode.element.multi_selector.count--;
this.parentNode.element.multi_selector.current_element.disabled=false;
返回false;
};
new_row.innerHTML=element.value;
新增行。追加子项(新增行按钮);
this.list\u target.appendChild(新行);
};
};
如何使用Pl/SQL将blob文件(最多3个)插入到Oracle DB中 真是一罐虫子。我环顾了一下四周,我能告诉你的是,你想做的事情一点也不容易。有几个问题你必须解决。但是,如果你感兴趣,一个勇敢的人(付出代价) 主要问题是Apex无法通过AJAX处理文件上传。从插件的文档中,你可以收集到一些信息:文件被分块处理,最后被重建。在IE(和非html5浏览器(IE9也没有FileReader对象))中,文件通过单独的页面和iframe逐个处理。这个页面大概有一个文件浏览项。我相信文件也会立即上传 另一种可能是。尽管在这里,你必须想出更多的办法才能让它发挥作用 但是,当您说“上载文件(最多3个)”时,这是否意味着您最多只能上载3个文件?在这种情况下,为什么不创建3个文件浏览项,然后动态显示/隐藏它们?省去了模仿多文件插件的麻烦 如果你愿意,最好的方法可能是使用额外的页面,尤其是在使用IE时
在HTML5浏览器中,您可以在javascript中尝试FileReader对象,读取文件并对其进行编码,然后对其进行分块处理,并通过plsql将其放回服务器端。有关这方面的更多信息,请检查并。使用服务器端语言?@epascarello我计划在AEPX中编写一个进程,将站点上查看的3个文件插入到Oracle DB中。我只需要知道如何给他们分配一个临时变量,这样我就可以在插入中引用它。