Rumah hujung hadapan web tutorial js jQuery AjaxUpload muat naik imej code_jquery

jQuery AjaxUpload muat naik imej code_jquery

May 16, 2016 pm 03:16 PM

Kali ini, AJAXUPLOAD digunakan sebagai pemalam muat naik tanpa berus klien muat naik Versi terbaharunya ialah 3.9 Alamat rasmi: http://valums.com/ajax-upload/
.

Perkenalkan jquery.min.1.4.2.js dan ajaxupload.js
ke dalam halaman

<script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="Scripts/ajaxupload3.9.js" type="text/javascript"></script>
Salin selepas log masuk

Kod HTML:

<style type="text/css">
#txtFileName {
width: 300px;
}
.btnsubmit{border-bottom: #cc4f00 1px solid; border-left: #ff9000 1px solid;border-top: #ff9000 1px solid; border-right: #cc4f00 1px solid;text-align: center; padding: 2px 10px; line-height: 16px; background: #e36b0f; height: 24px; color: #fff; font-size: 12px; cursor: pointer;}
</style>
上传图片:<input type="text" id="txtFileName" /><div id="btnUp" style="width:300px;" class=btnsubmit >浏览</div>
<div id="imglist"></div>

Salin selepas log masuk

kod js:

<script type="text/javascript">
$(function () {
var button = $('#btnUp'), interval;
new AjaxUpload(button, {
//action: 'upload-test.php',文件上传服务器端执行的地址
action: '/handler/AjaxuploadHandler.ashx',
name: 'myfile',
onSubmit: function (file, ext) {
if (!(ext && /^(jpg|jpeg|JPG|JPEG)$/.test(ext))) {
alert('图片格式不正确,请选择 jpg 格式的文件!', '系统提示');
return false;
}
// change button text, when user selects file
button.text('上传中');
// If you want to allow uploading only 1 file at time,
// you can disable upload button
this.disable();
// Uploding -> Uploading. -> Uploading...
interval = window.setInterval(function () {
var text = button.text();
if (text.length < 10) {
button.text(text + '|');
} else {
button.text('上传中');
}
}, 200);
},
onComplete: function (file, response) {
//file 本地文件名称,response 服务器端传回的信息
button.text('上传图片(只允许上传JPG格式的图片,大小不得大于150K)');
window.clearInterval(interval);
// enable upload button
this.enable();
var k = response.replace("<PRE>", "").replace("
", ""); if (k == '-1') { alert('您上传的文件太大啦!请不要超过150K'); } else { alert("服务器端传回的串:"+k); alert("本地文件名称:"+file); $("#txtFileName").val(k); $("").appendTo($('#imglist')).attr("src", k); } } }); });
Salin selepas log masuk

Kod ajaxuploadhandler.ashx sebelah pelayan

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
HttpPostedFile postedFile = context.Request.Files[0];
string savePath = "/upload/images/";
int filelength = postedFile.ContentLength;
int fileSize = 163600; //150K
string fileName = "-1"; //返回的上传后的文件名
if (filelength <= fileSize)
{
byte[] buffer = new byte[filelength];
postedFile.InputStream.Read(buffer, 0, filelength);
fileName = UploadImage(buffer, savePath, "jpg");
}
context.Response.Write(fileName);
}
public static string UploadImage(byte[] imgBuffer, string uploadpath, string ext)
{
try
{
System.IO.MemoryStream m = new MemoryStream(imgBuffer);
if (!Directory.Exists(HttpContext.Current.Server.MapPath(uploadpath)))
Directory.CreateDirectory(HttpContext.Current.Server.MapPath(uploadpath));
string imgname = CreateIDCode() + "." + ext;
string _path = HttpContext.Current.Server.MapPath(uploadpath) + imgname;
Image img = Image.FromStream(m);
if (ext == "jpg")
img.Save(_path, System.Drawing.Imaging.ImageFormat.Jpeg);
else
img.Save(_path, System.Drawing.Imaging.ImageFormat.Gif);
m.Close();
return uploadpath + imgname;
}
catch (Exception ex)
{
return ex.Message;
}
}
public static string CreateIDCode()
{
DateTime Time1 = DateTime.Now.ToUniversalTime();
DateTime Time2 = Convert.ToDateTime("1970-01-01");
TimeSpan span = Time1 - Time2; //span就是两个日期之间的差额 
string t = span.TotalMilliseconds.ToString("0");
return t;
}
Salin selepas log masuk

Dalam pembangunan laman web PHP, fungsi muat naik fail sebelum ini saya telah memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi muat naik fail. Dengan perkembangan teknologi WEB, pengalaman pengguna telah menjadi kunci untuk mengukur kejayaan laman web Hari ini saya akan berkongsi dengan anda contoh cara menggunakan Jquery untuk melaksanakan fungsi muat naik fail Ajax dalam PHP digunakan, yang boleh melaksanakan satu fail dan fungsi muat naik Berbilang fail.

AjaxUpload

Apabila pemalam Jquery AjaxUpload melaksanakan fungsi muat naik fail, tidak perlu mencipta borang borang Ia boleh merealisasikan muat naik fail dalam mod Ajax, anda juga boleh membuat borang seperti yang diperlukan.

Persediaan

1. Muat turun pakej pembangunan Jquery dan pemalam muat naik fail AjaxUpload.

2. Cipta uploadfile.html dan perkenalkan pakej pembangunan Jquery dan pemalam AjaxUpload

<script src="js/jquery-1.3.js"></script>
<script src="js/ajaxupload.3.5.js"></script> 
Salin selepas log masuk

3 Mengikut keperluan pemalam Jquery AjaxUpload, buat DIV yang mencetuskan fungsi muat naik fail Ajax

<ul> 
<li id="example"> 
<div id="upload_button">文件上传</div>
<p>已上传的文件列表:</p> 
<ol class="files"></ol>
</ul> 
Salin selepas log masuk

Nota: Daripada kod di bawah, kita dapat melihat bahawa pemalam Jquery AjaxUpload mencetuskan fungsi muat naik fail berdasarkan DIV butang muat naik.

Kod JS bahagian hadapan

Saya menetapkan suis dalam kod untuk memadankan jenis fail yang dimuat naik mengikut keperluan, dan juga menetapkan sama ada untuk memuat naik satu fail atau berbilang fail dalam mod Ajax.

$(document).ready(function(){
var button = $('#upload_button'), interval;
var fileType = "all",fileNum = "one"; 
new AjaxUpload(button,{
action: 'do/uploadfile.php',
/*data:{
'buttoninfo':button.text()
},*/
name: 'userfile',
onSubmit : function(file, ext){
if(fileType == "pic")
{
if (ext && /^(jpg|png|jpeg|gif)$/.test(ext)){
this.setData({
'info': '文件类型为图片'
});
} else {
$('<li></li>').appendTo('#example .files').text('非图片类型文件,请重传');
return false; 
}
}
button.text('文件上传中');
if(fileNum == 'one')
this.disable();
interval = window.setInterval(function(){
var text = button.text();
if (text.length < 14){
button.text(text + '.'); 
} else {
button.text('文件上传中'); 
}
}, 200);
},
onComplete: function(file, response){
if(response != "success")
alert(response);
button.text('文件上传');
window.clearInterval(interval);
this.enable();
if(response == "success");
$('<li></li>').appendTo('#example .files').text(file); 
}
});
}); 
Salin selepas log masuk

Nota:

Baris 1: fungsi $(document).ready(), fungsi dalam Jquery, serupa dengan window.load Gunakan fungsi ini untuk memanggil fungsi terikat serta-merta apabila DOM dimuatkan dan sedia untuk dibaca dan dimanipulasi.

Baris 3: FileType dan fileNum parameter mewakili jenis dan bilangan fail yang dimuat naik Nilai lalai ialah semua jenis fail boleh dimuat naik pada masa yang sama fail atau berbilang fail pada masa yang sama, anda boleh Nilai kedua-dua pembolehubah ini menjadi gambar dan banyak lagi.

Baris 6~8: POST data ke pelayan Anda boleh menetapkan nilai statik atau mendapatkan beberapa nilai dinamik melalui fungsi operasi DOM Jquery, seperti nilai INPUT dalam bentuk, dsb.

Baris 9: Bersamaan dengan bahagian hadapan

<input type="file" name="userfile"> 
Salin selepas log masuk

$_FILES ['fail pengguna'] di sebelah pelayan

Baris 10~36: Fungsi dicetuskan sebelum muat naik fail.

Baris 11~21: Fungsi penapisan jenis fail imej, Jquery setData fungsi digunakan untuk menetapkan nilai POST ke pelayan.

Baris 25~26: Tetapkan sama ada untuk memuat naik hanya satu fail atau berbilang fail pada masa yang sama Jika hanya satu fail dimuat naik, butang pencetus akan dilumpuhkan. Jika anda ingin memindahkan beberapa fail lagi, sila tetapkan nilai MAXSIZE dalam program muat naik fail PHP sebelah pelayan Sudah tentu, had saiz fail yang dimuat naik juga berkaitan dengan tetapan dalam fail PHP.INI.

Baris 28~35: Semasa proses muat naik fail, teks butang dikemas kini secara dinamik setiap 200 milisaat, mencapai kesan gesaan dinamik. Fungsi window.setInterval digunakan untuk melaksanakan fungsi terbina dalam setiap masa yang ditentukan Unit masa interaksi ialah milisaat.

Baris 37~49: Fungsi dicetuskan selepas fungsi muat naik fail selesai Jika pelayan melaporkan ralat mengikut nilai pulangan, bahagian hadapan menggesa mesej ralat melalui ALERT.

Kod muat naik fail PHP sebelah pelayan

Ia biasanya disesuaikan daripada tutorial contoh kod fungsi muat naik fail PHP yang diperkenalkan sebelum ini. Tetapan saiz muat naik fail, mesej ralat dan arahan lain yang terlibat telah diterangkan secara terperinci dalam artikel ini.

$upload_dir = '../file/';
$file_path = $upload_dir . $_FILES['userfile']['name'];
$MAX_SIZE = 20000000;
echo $_POST['buttoninfo'];
if(!is_dir($upload_dir))
{
if(!mkdir($upload_dir))
echo "文件上传目录不存在并且无法创建文件上传目录";
if(!chmod($upload_dir,0755))
echo "文件上传目录的权限无法设定为可读可写";
}
if($_FILES['userfile']['size']>$MAX_SIZE)
echo "上传的文件大小超过了规定大小";
if($_FILES['userfile']['size'] == 0)
echo "请选择上传的文件";
if(!move_uploaded_file( $_FILES['userfile']['tmp_name'], $file_path))
echo "复制文件失败,请重新上传"; 
switch($_FILES['userfile']['error'])
{
case 0:
echo "success" ;
break;
case 1:
echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
break;
case 2:
echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
break;
case 3:
echo "文件只有部分被上传";
break;
case 4:
echo "没有文件被上传";
break;
}
Salin selepas log masuk

Ringkasan

Pada asasnya, prototaip fungsi pencetus muat naik fail Ajax bahagian hadapan dan fungsi muat naik fail PHP bahagian pelayan telah diperkenalkan Anda boleh menambah kod bahagian hadapan dan belakang mengikut keperluan anda sendiri, atau anda boleh memisahkan beberapa fungsi, seperti jenis fail, fail tunggal atau fungsi muat naik berbilang fail. Secara umum, agak mudah untuk menggunakan pemalam Jquery AjaxUpload untuk melaksanakan fungsi muat naik fail.

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Apr 04, 2025 pm 05:12 PM

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Apr 04, 2025 pm 02:06 PM

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...

See all articles