web-dev-qa-db-fra.com

Importation de fichiers volumineux via le format HTML (plus de 2 Go)

Y a-t-il un moyen de télécharger un fichier de plus de 2 Go en utilisant le téléchargement de formulaire HTML? Auparavant, je téléchargeais des fichiers volumineux via Silverlight à l'aide de la fragmentation (division d'un fichier volumineux en segments, puis téléchargement d'un segment à un, puis réassemblage de segments sur le serveur).

Nous sommes maintenant obligés d'utiliser un simple envoi de formulaires HTML (bien que GWT). Veuillez me guider s'il existe un moyen d'obtenir un fichier volumineux de cette manière.

S'il est impossible de le faire en utilisant du simple langage HTML, quelqu'un peut-il me guider sur la manière de diviser et de télécharger un fichier en segments en utilisant flex?

34
Nadeem Ullah

La limitation de la taille des requêtes HTTP POST ne se situe généralement pas du côté HTML. La limitation est plus du côté du serveur. Le serveur Web doit être configuré pour accepter les demandes POST volumineuses. La valeur par défaut est généralement 2 Go et le serveur renvoie généralement une erreur HTTP 500 à ce sujet. La limite par défaut peut souvent être augmentée à 4 Go, mais tout dépassement dépassera la frontière sur les systèmes 32 bits. Sur les systèmes 64 bits avec un système d’exploitation 64 bits, la limite théorique est beaucoup plus élevée, à 16 EB.

Si la configuration du serveur Web pour accepter les demandes POST volumineuses n'est pas une option, ou si vous souhaitez aller au-delà de la limite du serveur Web, vous ne pouvez diviser le fichier côté client et réassembler du côté serveur.

Puisque le langage HTML n’est qu’un langage de balisage, il n’offre aucune possibilité de fractionner le fichier. Vous devez vraiment utiliser un langage de programmation normal, tel que C # (Silverlight) ou Java (Applet), à la manière d'une petite application utilisée par votre page Web. C'est peut-être aussi possible avec Flash ou Flex, mais ne m'imposez pas, je ne le fais pas non plus.

Cela dit, FTP est un bien meilleur choix que HTTP pour transférer des fichiers (volumineux) sur le réseau. Je reconsidérerais le choix d'utiliser HTTP pour cela.

35
BalusC

Utilisez l'API de fichier HTML5 pour télécharger des fichiers volumineux. qui a le concept de tranchage, de sorte que vous pouvez télécharger des fichiers volumineux.

var reader= new FileReader();
reader.onload=function(e){

//do whatever you want with result
}
var blob = file.slice(startingByte, endindByte);//slicing file
reader.readAsBinaryString(blob);

Didacticiel Système de fichiers

Tutoriel API de fichier

37
Konga Raju

nous avons créé une application Web (https) (utilisant Django/python) qui télécharge des fichiers en bloc dans la base de données sqlserver. Pour cela, nous lisons le fichier en morceaux, transféré sur le serveur via sftp et effectuons des insertions en bloc dans sqlserver. Nous l'avons évalué pour la taille de fichier de 1 Go et la fin du processus a pris environ 1 minute.

0
Sudhakar Chavan