1. Primero, implementa la carga de archivos grandes . Si se trata de unos pocos megabytes o docenas de megabytes, use el método de carga básica, pero si se trata de una carga de archivo grande, es mejor usar la carga de fragmentos. Aquí uso principalmente el cliente para leer los datos fragmentados en el segmento del servidor y luego guardarlos. Después de leer el segmento del servidor, se combinan los datos fragmentados.
2. El código frontal es el siguiente:
< %@ Page lenguaje = "c#" autoeventwireUp = "true" codeBeHind = "uploadTest2.aspx.cs" heredes = "html5uploadTest.uploadTest2" %> <html lang = "zh-cn"> <fead> <meta charset = "utf-8"> <título> EJEMPLO DE ACTIVO HTML5 ACTIVO EL ACTIVO Fragmentos </title> <script src = "scripts/jQuery-1.8.2.js"> </script> <link href = "bootstrap-suprogressbar/bootstrap-progreseBar-3.3.4.css" rel = "stylesheet"/> <script src = "bootstrap-overBar/bootstrap-ProgressBar.js"> </script scrip href = "jQueryui/jQuery-ui.css" rel = "stylesheet"/> <script src = "jQueryui/jQuery-ui.js"> </script>-%> <script> function uploadFile () {$ ("#cargar"). attr ("discapacitado", "discapacitado"); var fileo = $ ("###"#"0] [0]. // File Object filenum = $ ("#archivo") [0] .files [0] .length, name = file.name, // file name size = file.size, // tamaño total Succeed = 0; var Shardsize = 2 * 1024 * 1024, // Compartir shardcount = math.ceil (size /shardsize); // número total de cortes $ ('. Forma, FormData es un nuevo formulario VAR agregado a HTML5. = nuevo FormData (); form.append ("data", file.slice (inicio, final)); // El método Slice se utiliza para cortar parte del archivo form.append ("nombre", nombre); Form.append ("Total", ShardCount); // Número total de cortes form.append ("índice", i + 1); // El número actual de rebanadas es // Ajax envía $ .AJAX ({url: "upload.ashx", type: "post", data: form, async: true, // async processData: false, // es muy importante decirle jQuery no procesar contenido de contenido: falso, // es muy importante especificar como falso para formar el contenido correcto: {++ succeed; $ ("#output"). Text (succeed + " /" + shardCount); var porcent = ((súbdito / shardCount) .tofixed (2)) * 100; updateProgress (porcentaje); if (súbdito == shardCount) {$ ("####carga"). removeattr ("discapacitado");}}});}}} progressBARWidth = porcent porcentual * $ element.width ()/100; $ element.find ('div'). animate ({width: progressBarWidth}, 500) .html (porcentaje + "%");} // $ (document) .Ready (function () {// $ ('. Progress .progress-bar'). }); //}); función UpdateProgress (porcentaje) {$ ('. onClick = "uploadFile ();"> cargar </boton> <span id = "output" style = "font-size: 12px"> en espera </span> <div> <div id = "progressbar" rol = "Progressbar" Data-TransitionGoal = ""> </div> </div> </body> </html>3. Los procedimientos generales de procesamiento de antecedentes son los siguientes:
usando System; usando System.Collections.Generic; Usando System.io; usando System.Linq; usando System.Web; Namespace Html5UploadTest {/// <<summary> /// Descripción sumaria para upload /// <<</summary> public class upload: ihttphandler {public void processRequest (htttpcontext) {context. "Text/Plain"; intente {// elige los parámetros de la solicitud, tenga en cuenta que el archivo cargado es String en request.files name = context.Request ["name"]; int total = convert.Toint32 (context.request ["total"]); int index = convert.Toint32 (context.request ["index"]; var data = context.files ["files ["" "data"]; Disk String dir = context.request.mappath ("~/temp"); string file = path.combine (dir, nombre + "_" + index); data.saveas (archivo); // Si ya es el último fragmento, combine // de curso, también puede usar otros métodos como escribir directamente a la ubicación correspondiente del archivo final cuando recibe cada shard, pero debe controlar la concurrencia para evitar el archivo de bloqueo de archivo. Total) {file = Path.ComBine (dir, nombre); // byte [] bytes = null; usando (fileSeam fs = new FileStream (file, fileMode.openorcReate)) {for (int i = 1; i <= total; ++ i) {string parte = path.combine (dir, name + "_" + i); // bytes = system.io.file.file.readbytes (parte); // fs.write (bytes, 0, bytes.LLInp. null; system.io.file.delete (parte); fs.close ();}}}}} catch (excepción) {throw;} // return si es exitoso, el procesamiento simplificado se realiza aquí // return JSON (new {error = 0});} public bool es reubierto {get {return False;}}}}}4. Por supuesto, el fondo también necesita un manejo de excepciones o interrupciones de energía y transmisión para continuar. . .
Lo anterior es el código de ejemplo de Bootstrap Progressbar que le presenté. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!