Ajax+PHP實現非同步圖片上傳
html頁面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax+PHP實現非同步圖片上傳</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<script src="js/jquery-1.10.2.min.js"></script>
<style type="text/css">
#feedback{
height: 200px;
text-align: center;
height: 160px;
border: 1px solid silver;
border-radius: 3px;
}
#feedback img{
margin:3px 10px;
border: 1px solid silver;
border-radius:3px;
padding: 6px;
width: 35%;
height: 85%;
}
#feedback p{
font-family: "微軟雅黑";
line-height: 120px;
color: #ccc;
}
.file {
position: relative;
display: inline-block;
border: 1px solid #1ab294;
border-radius: 4px;
padding: 8px 16px;
overflow: hidden;
color: #fff;
text-decoration: none;
text-indent: 0;
line-height: 20px;
color: #1ab294;
}
.file input {
position: absolute;
font-size: 100px;
right: 0;
top: 0;
opacity: 0;
}
.box{
margin-top: 10px;
text-align: center;
}
.box a{
margin-left: 10px;
}
</style>
</head>
<body>
<!-- 響應返回資料容器 -->
<div id="feedback">
</div>
<div class="box">
<a href="javascript:;" class="file">選擇圖片
<input type="file" multiple="multiple" id="inputfile" name="" class="photo">
</a>
<a href="javascript:;" class="file close">重新選擇
<input type="buttom" class="photo">
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
//響應檔案新增成功事件
$("#inputfile").change(function(){
if (feedback.children('img').length>1) {
alert("最多隻能選擇兩張圖片");
return false;
}
//建立FormData物件
var data = new FormData();
//為FormData物件新增資料
$.each($('#inputfile')[0].files, function(i, file) {
data.append('upload_file'+i, file);
});
//傳送資料
$.ajax({
url:'up.php',
type:'POST', /*提交方式*/
data:data,
cache: false,
contentType: false, /*不可缺*/
processData: false, /*不可缺*/
success:function(data){
data = $(data).html(); /*轉格式*/
//第一個feedback資料直接append,其他的用before第1個( .eq(0).before() )放至最前面。
//data.replace(/</g,'<').replace(/>/g,'>') 轉換html標籤,否則圖片無法顯示。
if($("#feedback").children('img').length == 0)
{
$("#feedback").append(data.replace(/</g,'<').replace(/>/g,'>'));
}
else{
$("#feedback").children('img').eq(0).before(data.replace(/</g,'<').replace(/>/g,'>'));
}
},
error:function(){
alert('上傳出錯');
}
});
});
});
</script>
</body>
</html>
up.php
<?php
header('content-type:text/html charset:utf-8');
$dir_base = "./files/"; //檔案上傳根目錄
//沒有成功上傳檔案,報錯並退出。
$output = "<textarea>";
$index = 0; //$_FILES 以檔案name為陣列下標,不適用foreach($_FILES as $index=>$file)
foreach($_FILES as $file){
$upload_file_name = 'upload_file' . $index; //對應index.html FomData中的檔案命名
$filename = $_FILES[$upload_file_name]['name'];
$gb_filename = iconv('utf-8','gb2312',$filename); //名字轉換成gb2312處理
//檔案不存在才上傳
if(!file_exists($dir_base.$gb_filename)) {
$isMoved = false; //預設上傳失敗
$MAXIMUM_FILESIZE = 1 * 1024 * 1024; //檔案大小限制 1M = 1 * 1024 * 1024 B;
$rEFileTypes = "/^\.(jpg|jpeg|gif|png){1}$/i";
if ($_FILES[$upload_file_name]['size'] <= $MAXIMUM_FILESIZE &&
preg_match($rEFileTypes, strrchr($gb_filename, '.'))) {
$isMoved = @move_uploaded_file ( $_FILES[$upload_file_name]['tmp_name'], $dir_base.$gb_filename); //上傳檔案
}
}else{
$isMoved = true; //已存在檔案設定為上傳成功
}
if($isMoved){
//輸出圖片檔案<img>標籤
//注:在一些系統src可能需要urlencode處理,發現圖片無法顯示,
//請嘗試 urlencode($gb_filename) 或 urlencode($filename),不行請檢視HTML中顯示的src並酌情解決。
$output .= "<img src='{$dir_base}{$filename}' title='{$filename}' alt='{$filename}'/>";
}else {
//上傳失敗則把error.jpg傳回給前端
$output .= "<img src='{$dir_base}error.jpg' title='{$filename}' alt='{$filename}'/>";
}
$index++;
}
echo $output."</textarea>";
?>
相關文章
- vue 實現貼上上傳圖片Vue
- springmvc + ajaxfileupload 實現非同步上傳檔案(圖片)SpringMVC非同步
- formData原生實現圖片上傳ORM
- PHP實現圖片(檔案)上傳PHP
- node+express實現圖片上傳功能Express
- layui中實現上傳圖片壓縮UI
- 通過API介面實現圖片上傳API
- HTML5實現圖片上傳2HTML
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- VueQuillEditor富文字上傳圖片-非base64VueUI
- 有道雲筆記非會員上傳圖片筆記
- angularjs 實現圖片上傳實時預覽AngularJS
- element-ui+Vue實現的圖片上傳UIVue
- django 實現圖片上傳和顯示操作Django
- jsp+springmvc實現檔案上傳、圖片上傳和及時預覽圖片JSSpringMVC
- SpringMVC實現ajax上傳圖片實時預覽SpringMVC
- struts:實現圖片的上傳 argument type mismatch errorError
- 使用Vue實現圖片上傳的三種方式Vue
- 用Vue來實現圖片上傳多種方式Vue
- vue 實現剪裁圖片並上傳伺服器Vue伺服器
- 移動端H5實現圖片上傳H5
- 原生jq實現圖片上傳到伺服器伺服器
- php 非同步上傳圖片幾種方法總結PHP非同步
- SpringMVC中Ajax非同步上傳圖片的方法SpringMVC非同步
- 批次非同步上傳aws圖片指令碼(python)非同步指令碼Python
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- Django實現圖片上傳並前端頁面顯示Django前端
- FileReader初步使用實現上傳圖片預覽效果
- PHP+jQuery+Ajax實現多圖片上傳介紹PHPjQuery
- js實現的判斷上傳圖片的型別JS型別
- 【easyui 】上傳圖片UI
- 上傳圖片jsJS
- 圖片上傳及圖片處理
- 實戰:圖片上傳元件開發元件
- element-ui圖片上傳元件實現前端直傳阿里雲UI元件前端阿里
- 短視訊平臺開發,圖片上傳和圖片預覽功能實現
- 如何實現一個簡易的圖片上傳Web ServerWebServer