界面样式我是参考了一个国外的相册网站,改动不大,只是把鸟语转换成中文,以及上传时的样式也进行了改动,之所以选这个的原因就是,我很容易做扩展,它支持3种方式添加图片,一种拖拽上传,一种常规的选">
Heim Web-Frontend H5-Tutorial HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten

HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten

May 16, 2016 pm 03:49 PM
html5 上传 拖拽

Da es sich im Titel um ein Beispiel handelt, werde ich es dieses Mal nicht erklären, da ich dieses Beispiel anhand von etwa 5 oder 6 per Drag-and-Drop hochgeladenen Plug-Ins und Demos zusammengestellt und dann die besten darunter zusammengestellt habe . Der Ort wurde ausgewählt und schließlich wurde er zu einem solchen Beispiel. Schauen wir ihn uns gemeinsam an (es kann nicht garantiert werden, dass die Adresse für längere Zeit gültig ist. Wenn sie ungültig ist, klicken Sie bitte am Ende auf den Demo-Download der Artikel):

Ich beziehe mich auf den Schnittstellenstil. Eine ausländische Fotoalbum-Website hat nur die Vogelgesänge in Chinesisch umgewandelt und den Stil geändert Ich habe mich für diese Option entschieden, weil sie für mich einfach zu erweitern ist. Sie unterstützt drei Möglichkeiten zum Hochladen von Bildern, die andere ist das Hochladen von Dateien per Drag-and-Drop und die andere ist das Hinzufügen von Netzwerkbildern. Es integriert geschickt drei Upload-Modi und Sie können es mit dem IE-Browser durchsuchen. Wenn HTML5 nicht unterstützt wird, gibt es keine Aufforderung zum Hochladen von Bildern per Drag & Drop, wie im Bild gezeigt:

Der wichtigste Teil des Drag-and-Drop-Uploads ist der js-Teil des Codes, der 70 % der Funktionen implementiert. Die anderen 30 % dienen lediglich der Übermittlung der Bildinformationen an den Hintergrund und der anschließenden entsprechenden Verarbeitung, z. B. der Komprimierung , Zuschneiden usw. Schauen wir uns also zunächst den js-Implementierungscode an.

Code kopieren
Der Code lautet wie folgt:

$().ready( function() {
if($.browser.safari || $.browser.mozilla){
$('#dtb-msg1 .kompatible').show();
$('#dtb -msg1 . nicht kompatibel').hide();
$('#drop_zone_home').hover(function(){
$(this).children('p').stop().animate({ top:' 0px'},200);
},function(){
$(this).children('p').stop().animate({top:'-44px'},200 );
});
//Funktionsimplementierung
$(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(); 🎜>} ,
dragover:function(e){
e.preventDefault();
$('.dashboard_target_box').addClass('over');
}
}) ;
var box = document.getElementById('target_box');
box.addEventListener("drop",function(e){
e.preventDefault();
//Holen Sie sich die Dateiliste
var fileList = e.dataTransfer.files;
var img = document.createElement('img');
//Erkennen Sie, ob es sich um einen Vorgang zum Ziehen von Dateien auf die Seite handelt
if(fileList .length == 0) {
$('.dashboard_target_box').removeClass('over');
return;
//Erkennen Sie, ob es sich bei der Datei um ein Bild handelt
if (fileList[0].type. indexOf('HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten') === -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{
//Instanziiere das Dateileserobjekt
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); -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 geladen = 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);
alert(result.filename); 🎜>$('.show' ).append(result.img);
var fd = new FormData(
fd.append('xfile', fileList[0 ]);
xhr. send(fd);
}else{
$('#dtb-msg1 .hide(); ('#dtb-msg1 .nicht kompatibel ').show();
}
});
Zu Beginn habe ich zunächst den Browsertyp festgelegt, da wie gerade erwähnt verschiedene Browser unterschiedliche Schnittstellen sehen. Der Hauptimplementierungscode beginnt mit „Funktionsimplementierung“. Ich werde nicht näher darauf eingehen, warum dieser Vorgang auf diese Weise durchgeführt wird und was das Prinzip ist. Sie können sich auf diesen Artikel beziehen: „Detaillierte Erläuterung des Drag-and-Drop-Uploads auf Renren Homepage (HTML5 Drag&Drop, FileReader API, Formdata)“, aber der Code für den Ajax-Upload-Teil ist immer noch etwas anders, da der von Renren etwas mühsam zu sein scheint, also habe ich nach einem anderen Weg gesucht.
Der letzte Teil besteht darin, den PHP-Code hochzuladen. Hier gebe ich nur eine Referenz an, Sie können ihn entsprechend den Anforderungen des Projekts selbst schreiben.

Code kopieren
Der Code lautet wie folgt:

$r = new stdClass( );
header('content-type: application/json');
$maxsize = 10; //Mb
if($_FILES['xfile']['size'] > ($ maxsize * 1048576 )){
$r->error = "Die Bildgröße überschreitet nicht $maxsize MB"; ($folder)) {
mkdir($folder);
$folder .= $_POST['folder'] : ''; 🎜>if(! is_dir($folder)){
mkdir($folder);
}
if(preg_match('/HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten/i', $_FILES['xfile']['type' ])){
$filename = $_POST['value'] : $folder sha1(@microtime() . '-' . $_FILES['xfile']['name ']) . ' .jpg'; count($tld) - 1];
$filename = $_POST['value'] : $folder sha1(@microtime() . '-' . $_FILES['xfile ']['name ']) . $tld; $_FILES['xfile ']['type'], $types)){
$source = file_get_contents($_FILES["xfile"]["tmp_name"]);
HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitenresize($source, $filename , $_POST['width'], $_POST['height'], $_POST['crop'], $_POST['quality']);
}else{
move_uploaded_file($_FILES["xfile "]["tmp_name "], $filename);
}
$path = str_replace('test.php', '', $_SERVER['SCRIPT_NAME']);
$r-> filename = $filename;
$r->path = $path
$r->img = 'HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten';
echo json_encode($r);
function HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitenresize($source, $destination, $width = 0, $height = 0, $crop = false, $quality = 80) {
$quality = $quality ? $quality : 80;
$HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten = HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitencreatefromstring($source);
if ($HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten) {
// Abmessungen abrufen
$w = HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitensx($HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten );
$h = HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitensy($HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten);
if (($width && $w > $width) || ($height && $h > $height)) {
$ratio = $w / $ h;
if (($ratio >= 1 || $height == 0) && $width && !$crop) {
$new_height = $width / $ratio; >$new_width = $ width;
} elseif ($crop && $ratio $new_height = $width / $ratio; ;
} else {
$new_width = $height * $ratio;
$new_height = $height;
} else {
$new_width = $w; $new_height = $h ;
}
$x_mid = $new_width * .5; //horizontale Mitte
$y_mid = $new_height * .5; //vertikale Mitte
/ >error_log('height : ' . $new_height . ' - width: ' . $new_width)
$new = HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitencreatetruecolor(round($new_width), Round($new_height)); $HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten, 0, 0, 0, 0, $new_width, $new_height, $w, $h);
// Zuschneiden
if ($crop) {
$crop = HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitencreatetruecolor($width ? $width : $new_width , $height ? $height : $new_height);
HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitencopyresampled($crop, $new, 0, 0, ($x_mid - ($width * .5)), 0, $width, $ height, $width, $height);
//($y_mid - ($height * .5))
}
// Ausgabe
// Interlancing aktivieren [für progressives JPEG]
HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiteninterlace($crop ? $crop : $new, true);
$dext = strtolower(pathinfo($destination, PATHINFO_EXTENSION));
if ($dext == '') {
$dext = $ext;
$destination .= '.' HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitenjpeg($crop ? $crop : $new, $destination, $quality);
case 'png':
$pngQuality = ($quality - 100) /
$ pngQuality = Round(abs ($pngQuality));
HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitenpng($crop ? $crop : $new, $destination, $pngQuality); $crop ? $crop : $new, $destination);
@HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitendestroy($HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeiten);
@HTML5-Drag-and-Drop-Upload-Bildbeispiel Demonstration_HTML5-Tutorial-Fähigkeitendestroy($crop );
}
}


PHP gibt schließlich ein Array im JSON-Format zurück. Die von mir zurückgegebenen Informationen sind die Bildadresse, der Name und der HTML-Code des IMG. Zu diesem Zeitpunkt wird der Vorgang abgerufen und verarbeitet ist vorbei.
Wie am Anfang des Artikels erwähnt, gibt es auch Click-to-Select-Datei-Uploads und Netzwerkbilder. Da diese beiden nicht in den Rahmen dieses Themas fallen, werde ich nicht darauf eingehen. Darüber hinaus sind diese beiden Funktionen problemlos zu implementieren.
Demo-Download
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tabellenrahmen in HTML Tabellenrahmen in HTML Sep 04, 2024 pm 04:49 PM

Anleitung zum Tabellenrahmen in HTML. Hier besprechen wir verschiedene Möglichkeiten zum Definieren von Tabellenrändern anhand von Beispielen für den Tabellenrand in HTML.

HTML-Rand links HTML-Rand links Sep 04, 2024 pm 04:48 PM

Anleitung zum HTML-Rand links. Hier besprechen wir einen kurzen Überblick über HTML margin-left und seine Beispiele sowie seine Code-Implementierung.

Verschachtelte Tabelle in HTML Verschachtelte Tabelle in HTML Sep 04, 2024 pm 04:49 PM

Dies ist eine Anleitung für verschachtelte Tabellen in HTML. Hier diskutieren wir anhand der entsprechenden Beispiele, wie man eine Tabelle innerhalb der Tabelle erstellt.

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

Leitfaden zum HTML-Tabellenlayout. Hier besprechen wir die Werte des HTML-Tabellenlayouts zusammen mit den Beispielen und Ausgaben im Detail.

HTML-Eingabeplatzhalter HTML-Eingabeplatzhalter Sep 04, 2024 pm 04:54 PM

Leitfaden für HTML-Eingabeplatzhalter. Hier besprechen wir die Beispiele für HTML-Eingabeplatzhalter zusammen mit den Codes und Ausgaben.

Text in HTML verschieben Text in HTML verschieben Sep 04, 2024 pm 04:45 PM

Anleitung zum Verschieben von Text in HTML. Hier besprechen wir eine Einführung, wie Marquee-Tags funktionieren, mit Syntax und Beispielen für die Implementierung.

HTML-geordnete Liste HTML-geordnete Liste Sep 04, 2024 pm 04:43 PM

Leitfaden zur HTML-geordneten Liste. Hier besprechen wir auch die Einführung von HTML-geordneten Listen und Typen sowie deren Beispiele

HTML-Onclick-Button HTML-Onclick-Button Sep 04, 2024 pm 04:49 PM

Anleitung zum HTML-OnClick-Button. Hier diskutieren wir deren Einführung, Funktionsweise, Beispiele und Onclick-Events in verschiedenen Veranstaltungen.

See all articles