2012-05-18 4 views
0

Используя следующий ввод HTML и Javascript, пользователь может добавить до 3 файлов на страницу.Загрузка нескольких файлов: Javascript и SQL Insert

Код для ввода загрузки файла:

<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> 

JavaScript в HTML-заголовок:

<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> 

Как получить файлы двоичных объектов (до 3), вставленный в БД Oracle с помощью Pl/SQL?

+0

Используя ваш серверный язык? – epascarello

+0

@epascarello Я планировал записать процесс в AEPX, чтобы вставить в Oracle DB 3 файла, которые просматриваются на сайте. Мне просто нужно знать, как назначить им временную переменную, чтобы я мог ссылаться на нее во вставке. –

ответ

0

Что может червяков. Я немного оглянулся, и все, что я могу вам сказать, это то, что вы хотите сделать, совсем не просто. Есть несколько проблем, с которыми вам придется работать. Но, если вам интересно, храбрый человек made a plugin available with multi-file upload (по цене).

Основная проблема заключается в том, что Apex не имеет возможности обрабатывать загрузки файлов через AJAX. Из документации плагина вы можете собрать некоторую информацию: файлы обрабатываются в кусках, которые будут восстановлены в конце. В IE (и не-html5-браузерах (и IE9 также не имеет объекта FileReader)) файлы обрабатываются один за другим через отдельную страницу и через iframe. Предположительно, на этой странице есть элемент для просмотра файла. Я считаю, что файлы также будут загружены сразу.

Другим способом может быть through apex listener. Хотя здесь вам придется еще больше вычислить, чтобы это работало.

Однако, когда вы говорите «загружать файлы (до 3)», означает ли это, что вы можете загружать максимум до 3 файлов? В этом случае, почему бы вам не создать 3 элемента для просмотра файлов, которые вы затем динамически показываете/скрываете? Спасите себя от попыток воспроизвести многофайловый плагин.

Если вы действительно хотите, лучший маршрут, возможно, будет использовать дополнительную страницу, особенно при использовании IE.

В браузерах HTML5 вы можете попробовать объект FileReader в javascript, прочитать файл и закодировать его, а затем обработать его в кусках и поместить обратно вместе через serverly через plsql. Для получения дополнительной информации об этом, проверьте Reading local files in javascript и Html5 File Upload with Progress.

Смежные вопросы