Написано ранее:
В последние несколько дней я изучал загрузку файлов WebUploader. Предыдущие записи блога примеры использования WebUploader для простой загрузки файлов. Сегодня я также запишу примеры загрузки фрагментов и точек останова. В парке блога я также просмотрел некоторую информацию. По сути, обработка бэкэнд данных - сервлеты или Springmvc. Поскольку недавний проект всегда был Struts2, мы будем использовать действие в Struts2 для обработки данных для достижения эффекта загрузки файлов на части.
1. Что загружается Shard?
Как следует из имени, это означает разделение файла на части, то есть позволяя разделить файл на несколько небольших файлов, а затем загружать его. Преимущество этого заключается в том, что он облегчает загрузку больших файлов.
2. Общие идеи для загрузки шарда:
1. На странице стойки регистрации выберите файл и нажмите кнопку для загрузки.
2. WebUploader делит загруженные файлы на указанные номера и отправляет их на сервер бэкэнд один за другим.
3. Сервер получает разделенные небольшие файлы и хранит их во временной папке.
4. После того, как сервер получает разделенную небольшую файл, страница переднего плана выполняет успешную функцию загрузки.
5. В успешной функции загрузки отправьте запрос на сервер и запрос на объединение небольших файлов в целый файл.
6. Фон сервера объединяет файлы и удаляет временные файлы, которые хранят небольшие файлы после завершения слияния.
После понимания общего процесса загрузки Shard, пожалуйста, перейдите в демонстрацию напрямую.
Страница стойки регистрации:
<%@ page contentType = "text/html; charset = utf-8" language = "java"%> <%string smech = request.getScheme (); String servername = request.getServername (); String contextPath = request.getContextPath (); int port = request.getServerport (); // Доступ к веб -сайту и пути String BaseUrl = Smech + ": //" + ServerName + ":" + port + contextPath; request.setattribute ("baseurl", baseurl);%> <html> <head> <Title> Простой пример загрузки файлов с фрагментированным </title> <%-введением стилей CSS-%> <link href = "$ {baseurl}/webuploader0.1.5/webupload.css" ulloalder0.1.5/webupload.csss nofloader0.1.5/webupload.csss nofloader0.1.5/webupload.csss nofloader0.1.5/webupload. type = "text/css"/> <script src = "$ {baseurl} /ligerui2/jquery/jquery-1.9.0.min.js" type = "text/javascript"> </script> <%-Введение Файл Загрузка плагина-%> <script type = "javascript" src = "$ {baseurl}/webuploader0.1.5/webuploader.min.js"> </script> <script type = "text/javascript"> $ (function () {/* Для создания загрузки, это лучше всего дождаться, пока не создается элемент DOM. Место, которое легко игнорировать. «Файл» устанавливает имя домена для загрузки файла. Это ключ, если включена загрузка Shard, он не ограничивает количество загрузок, это будет несовместимо, например, в соответствии с нормом, но и то же самое, но и тот же, как и в случае, это не так. Порядок принятия и ошибок для реорганизации. Является ли JPEG, он сжимает и загрузит его снова перед загрузкой! // Написал конкретную логику в соответствии с требованиями проекта. }); Функция (ответ) {// Специальная логика ... console.log ('Успех загрузки .../n'); Math.ceil (file.size / (5 * 1024 * 1024)) завершены, это событие будет вызвано независимым от успеха или сбоя $ ("#btncancel"). Click (function () {// Логитичная обработка ..}); id = "btncancel"> Отмена загрузки </button> </div> </div> </body> </html>Бэкэнд Действие:
/** * Описание: com.ims.Action * Автор: Eleven * Дата: 2017/12/26 10:50 */@Controller ("fileAction") Открытый класс FileAction {/ * Связанные параметры для каждого небольшого файла, используемого для получения запроса сегментации */// Не забудьте предоставить соответствующий метод получения набора // файл загрузки (то же самое, что именная стоимость формы типа = файл) // Имя файла Private String uploadFilename; // загрузить тип частной строки oploadcontenttype; /** * Следующие переменные являются общедоступными, слишком много параметров, поэтому я не хочу устанавливать его на частные, а затем писать метод получения и установки, * просто используйте публику, просто Lazy */// Номер шардинга файла public String Chunk; public String guid; // Merge and Split используются для получения и отправки запросов на слияние Public String FileName; // имя файла public String Chunks; // номер сегмента // При загрузке файлов в осколки этот метод будет вызывать каждый раз, когда загружается небольшой файл, что не отличается от обычных сохраненных файлов public void uploadfile2 (), который вызывает исключение {string str = "d:/upload44/divide/"; // Путь сохранения файлов // Сохранить путь каждой малой строки файла realPath = str + guid + "/" + chunk; File tmp = new File (RealPath); Fileutils.copyfile (upload, tmp); System.out.println ("upload file"+uploadfilename+", который блокирует:"+chunk+", size:"+(upload.length ()/1024/1024)+"m"); } // Файл Merge public void mergefile () бросает exception {string path = "d:/upload44/merge/"; // Создать папку Merge New File (path) .mkdir (); // Создать файл MERGED FILE NEWFILE = новый файл (PATH + FILENAME); if (! newfile.exists ()) {newfile.createnewfile (); } FileOutputStream outpertStream = new FileOutputStream (newFile, true); // добавить файл добавление в byte [] byt = new Byte [10 * 1024 * 1024]; int len; FileInputStream temp = null;//Shash file for (int i = 0; i < Integer.parseInt(chunks); i++) { //"D:/upload44/divide/" + guid + "/" + i To save the path of the divided small file temp = new FileInputStream(new File("D:/upload44/divide/" + guid + "/" + i)); while ((len = temp.read (byt))! = -1) {System.out.println (len); outputStream.write (byt, 0, len); } temp.close (); } // Когда все записи приложения закончены, поток может быть закрыт outputstream.close (); // Удалить строку файла SHARD PATH2 = "D:/upload44/divide/" + guid; Fileutils.deletedirectory (новый файл (path2)); // удалить все содержимое в системе каталогов.out.println ("Успех! Guid =" + guid + "; chunks =" + chunks + "; filename =" + filename); } public file getUpload () {return upload; } public void setUpload (upload file) {this.upload = upload; } public String getUploadFilename () {return uploadfilename; } public void setUploadFilEname (string uploadfilEname) {this.uploadFilename = uploadfilename; } public String getUploadContentType () {return uploadContentType; } public void setUploadContentType (string uploadContentType) {this.UploadContentType = uploadContentType; }}Struts.xml Конфигурация:
<name Action = "uploadfile2" method = "uploadfile2"> </action> <name = "mergefile" method = "mergefile"> </action>
ОК, здесь, загрузка простой точки фрагментации файла завершена.
Кстати, фон получает только некоторые простые параметры, и, конечно, есть больше, чем вышеуказанные параметры, передаваемые из интерфейса WebUploader. Поэтому вы можете научиться использовать режим отладки F12 для просмотра отправленных запросов и соответствующих параметров запроса. Я не буду говорить об этом здесь.
Скриншот работает:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.