界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选">
Maison > interface Web > Tutoriel H5 > le corps du texte

html5 glisser-déposer télécharger un exemple d'image démonstration_html5 compétences du didacticiel

WBOY
Libérer: 2016-05-16 15:49:48
original
1680 Les gens l'ont consulté

Parce que le titre parle d'un exemple, je ne l'expliquerai pas cette fois, car j'ai reconstitué cet exemple en me référant à environ 5 ou 6 plug-ins et démos téléchargés par glisser-déposer, puis j'ai mis les meilleurs d'entre eux. . L'endroit a été choisi, et finalement il est devenu un tel exemple. Jetons-y un coup d'œil ensemble (l'adresse ne peut pas être garantie pendant une longue période. Si elle n'est pas valide, veuillez cliquer sur le téléchargement de la démo à la fin de. l'article) :

Je fais référence au style de l'interface. Un site Web d'album photo étranger n'a pas beaucoup changé. Il a simplement converti les chants d'oiseaux en chinois et a changé le style lors du téléchargement. J'ai choisi celui-ci, c'est qu'il est facile pour moi de le développer. Il prend en charge 3 façons d'ajouter des html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiels. L'une est le téléchargement par glisser-déposer, l'autre est la sélection régulière du téléchargement de fichiers et l'autre consiste à ajouter des html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiels réseau. Il intègre intelligemment trois modes de téléchargement et vous pouvez le parcourir avec le navigateur IE. S'il ne prend pas en charge HTML5, il n'y a pas d'invite à glisser-déposer pour télécharger des html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiels, comme le montre l'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel :

. La partie la plus importante du téléchargement par glisser-déposer est la partie js du code, qui implémente 70 % des fonctions. Les 30 % restants servent simplement à soumettre les informations de l'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel en arrière-plan, puis à effectuer le traitement correspondant, tel que la compression. , recadrage, etc. Jetons donc d'abord un coup d'œil au code d'implémentation de js.

Copier le code
Le code est le suivant :

$().ready( function() {
if($.browser.safari || $.browser.mozilla){
$('#dtb-msg1 .compatible').show(); -msg1 . non compatible').hide();
$('#drop_zone_home').hover(function(){
$(this).children('p').stop().animate({ top:' 0px'},200);
},function(){
$(this).children('p').stop().animate({top:'-44px'},200); );
});
//Implémentation de la fonction
$(document).on({
dragleave:function(e){
e.preventDefault();
$( '.dashboard_target_box ').removeClass('over');
},
drop:function(e){
e.preventDefault();
//$('.dashboard_target_box'). removeClass('over');
},
dragenter:function(e){
e.preventDefault();
$('.dashboard_target_box').addClass('over'); 🎜>} ,
dragover:function(e){
e.preventDefault();
$('.dashboard_target_box').addClass('over'); ;
var box = document.getElementById('target_box');
box.addEventListener("drop",function(e){
e.preventDefault();
//Obtenir la liste des fichiers
var fileList = e.dataTransfer.files;
var img = document.createElement('img');
//Détecter s'il s'agit d'une opération de glisser-déposer de fichiers vers la page
if(fileList .length == 0) {
$('.dashboard_target_box').removeClass('over');
return;
}
//Détecter si le fichier est une html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel
if (fileList[0].type. indexOf('html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel') === -1){
$('.dashboard_target_box').removeClass('over');
return; >if($.browser.safari ){
//Chrome8
img.src = window.webkitURL.createObjectURL(fileList[0]);
}else if($.browser.mozilla){
//FF4
img.src = window.URL.createObjectURL(fileList[0]);
}else{
//Instancier l'objet lecteur de fichier
var reader = new FileReader() ;
reader.onload = function(e){
img.src = this.result;
$(document.body).appendChild(img);
reader.readAsDataURL( fileList[0]);
}
var xhr = new XMLHttpRequest();
xhr.open("post", "test.php", true
xhr.setRequestHeader("X); -Requested-With", "XMLHttpRequest ");
xhr.upload.addEventListener("progress", function(e){
$("#dtb-msg3").hide();
$ ("#dtb-msg4 span" ).show();
$("#dtb-msg4").children('span').eq(1).css({width:'0px'});
$('.show ').html('');
if(e.lengthComputable){
var chargé = Math.ceil((e.loaded / e.total) * 100);
$("#dtb -msg4").children('span').eq(1).css({width:(loaded*2) 'px'}
}
}); false);
xhr. addEventListener("load", function(e){
$('.dashboard_target_box').removeClass('over');
$("#dtb-msg3"). show();
$ ("#dtb-msg4 span").hide();
var result = jQuery.parseJSON(e.target.responseText); 🎜>$('.show' ).append(result.img);
}, false);
var fd = new FormData(); ]);
xhr. send(fd);
},false();
$('#dtb-msg1 .compatible').hide(); ('#dtb-msg1 .notcompatible ').show();
}
}

);
Au début, j'ai d'abord déterminé le type de navigateur, car comme mentionné tout à l'heure, différents navigateurs voient différentes interfaces. Le code d'implémentation principal commence à partir de "Implémentation de fonction". Je n'entrerai pas dans les détails sur pourquoi cette opération est effectuée de cette manière et quel en est le principe. Vous pouvez vous référer à cet article : "Explication détaillée du téléchargement par glisser-déposer sur Renren. page d'accueil (Drag&Drop HTML5, API FileReader, formdata)", mais le code pour la partie de téléchargement ajax est encore un peu différent, car celui de Renren semble un peu gênant, alors j'ai cherché un autre moyen.
La dernière partie consiste à télécharger le code PHP. Ici, je fournis juste une référence, vous pouvez l'écrire vous-même en fonction des besoins du projet.

Copier le code
Le code est le suivant :

$r = new stdClass( );
header('content-type: application/json');
$maxsize = 10; //Mb
if($_FILES['xfile']['size'] > ($ maxsize * 1048576 )){
$r->error = "La taille de l'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel ne dépasse pas $maxsize Mo"
}
$folder = 'files/'
if(!is_dir; ($dossier)) {
mkdir($dossier);
}
$dossier .= $_POST['dossier'] ? 🎜>if(! is_dir($folder)){
mkdir($folder);
}
if(preg_match('/html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel/i', $_FILES['xfile']['type' ])){
$filename = $_POST['value'] ? $_POST['value'] : $folder sha1(@microtime() . '-' . $_FILES['xfile']['name. ']) ' .jpg';
}else{
$tld = split(',', $_FILES['xfile']['name']); count($tld) - 1];
$filename = $_POST['value'] ? $_POST['value'] : $folder sha1(@microtime() . '-' . $_FILES['xfile. ']['nom ']) . $tld;
}
$types = Array('html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel/png', 'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel/gif', 'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel/jpeg'); $_FILES['xfile ']['type'], $types)){
$source = file_get_contents($_FILES["xfile"]["tmp_name"]);
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielresize($source, $filename) , $_POST['largeur'], $_POST['hauteur'], $_POST['crop'], $_POST['qualité']);
}else{
move_uploaded_file($_FILES["xfile "]["tmp_name "], $filename);
}
$path = str_replace('test.php', '', $_SERVER['SCRIPT_NAME']);
$r-> nom de fichier = $nom de fichier;
$r->chemin = $chemin
$r->img = 'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel';
echo json_encode($r);
function html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielresize($source, $destination, $width = 0, $height = 0, $crop = false, $quality = 80) {
$quality = $quality ? $quality : 80;
$html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel = html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielcreatefromstring($source);
if ($html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel) {
// Obtenir les dimensions
$w = html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielsx($html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel) );
$h = html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielsy($html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel);
if (($largeur && $w > $width) || ($hauteur && $h > $hauteur)) {
$ratio = $w / $ h;
if (($ratio >= 1 || $height == 0) && $width && !$crop) {
$new_height = $width / $ratio; >$new_width = $ width;
} elseif ($crop && $ratio $new_height = $width / $ratio
$new_width = $width; ;
} else {
$new_width = $height * $ratio;
$new_height = $height;
} else {
$new_width = $w; $new_height = $h ;
}
$x_mid = $new_width * .5; //milieu horizontal
$y_mid = $new_height * .5; //milieu vertical
// rééchantillonner
error_log('height : ' . $new_height . ' - width: ' . $new_width);
$new = html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielcreatetruecolor(round($new_width), round($new_height)); $html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
// Recadrer
if ($crop) {
$crop = html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielcreatetruecolor($width ? $width : $new_width , $height ? $height : $new_height);
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielcopyresampled($crop, $new, 0, 0, ($x_mid - ($width * .5)), 0, $width, $ height, $width, $height);
//($y_mid - ($height * .5))
}
// Sortie
// Activer l'entrelacement [pour JPEG progressif]
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielinterlace($crop ? $crop : $new, true);
$dext = strtolower(pathinfo($destination, PATHINFO_EXTENSION));
if ($dext == '') {
$dext = $ext;
$destination .= '.' $ext;
switch ($dext) {
case 'jpeg':
case 'jpg':
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticieljpeg($crop ? $crop : $new, $destination, $quality);
break;
case 'png':
$pngQuality = ($quality - 100) / 11.111111
$ pngQuality = round(abs ($pngQuality));
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielpng($crop ? $crop : $new, $destination, $pngQuality) ;
case 'gif' :
html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticielgif( $crop ? $crop : $new, $destination);
break;
@html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticieldestroy($html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel);
@html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticieldestroy($new); );
}
}


PHP finira par renvoyer un tableau au format JSON. Les informations que j'ai renvoyées sont l'adresse de l'html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiel, le nom et le code html de l'img. Enfin, le tableau json est obtenu et traité en js. est fini.
Comme mentionné au début de l'article, il existe également des téléchargements de fichiers en cliquant pour sélectionner et des html5 glisser-déposer télécharger un exemple dimage démonstration_html5 compétences du didacticiels réseau, étant donné que ces deux éléments n'entrent pas dans le cadre de ce sujet, je n'en parlerai pas. De plus, ces deux fonctions ne sont pas gênantes à mettre en œuvre.
téléchargement de la démo
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!