代码是在yii1里面写的我就懒得删了,前端代码中也嵌入了PHP代码,也不懒得删了
HTML部分
<div style="margin-left: 250px" class="img_box<?=$info['id']?> img-box-common"></div>
<div class="btns" style="margin-left: 250px;">
<input type="file" size="6" class="btn_file_molding" onchange="upload(<?=$info['id']?>)" name="file" id="file<?=$info['id']?>">
</div>
js部分
引入ajaxfileupload.js前先吧jq引入
附一个下载链接https://download.csdn.net/download/weixin_41100576/10600933
<script src="<?php echo Yii::app()->baseUrl; ?>/scripts/ext/ajaxfileupload.js"></script>
<script>
function upload(id) {
$.ajaxFileUpload
(
{
url: "<?=$this->createUrl("upload")?>", //用于文件上传的服务器端请求地址
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'file' + id, //文件上传域的ID
dataType: 'json', //返回值类型 一般设置为json
success: function (data, status) //服务器成功响应处理函数
{
$(".img_box" + id).append("<img src='" + data.data['src'] + "'>");
if (typeof (data.error) != 'undefined') {
if (data.error != '') {
alert(data.error);
} else {
alert(data.msg);
}
}
},
error: function (data, status, e)//服务器响应失败处理函数
{
alert(e);
}
}
);
return false;
}
</script>
服务端上传文件操作部分
private function upload() {
if (empty($_FILES) || !isset($_FILES['file'])) {
$this->outputJson(300, "请选择图片");
}
//文件保存目录路径
$save_path = dirname(Yii::app()->BasePath) . '/upload/feedback/';
//文件请求路径
$request_path = Yii::app()->baseUrl . '/upload/feedback/';
//原文件名
$file_name = $_FILES['file']['name'];
//服务器上临时文件名
$tmp_name = $_FILES['file']['tmp_name'];
//文件大小
$file_size = $_FILES['file']['size'];
//检查文件名
if (!$file_name) {
$this->outputJson(300, '请选择文件');
}
$ext_arr = ['png', 'jpg'];
//获得文件扩展名
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
//检查扩展名
if (in_array($file_ext, $ext_arr) === false) {
$this->outputJson(300, "上传文件扩展名是不允许的扩展名。只允许" . implode(",", $ext_arr) . "格式。");
}
//创建文件夹
if (!file_exists($save_path)) {
mkdir($save_path, 0755, true);
}
//新文件名
$new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;
//移动文件
$file_path = $save_path . $new_file_name;
if (move_uploaded_file($tmp_name, $file_path) === false) {
$this->outputJson(300, "上传文件失败。");
}
return $request_path . $new_file_name;