欢迎登录

解决jquery+php服务器上传图片或文件

:2019-07-16    :69 次   :6066 字   

1、介绍:

在我们开始网站开发的过程中,上传文件必然是必不可少的步骤,如何结合js和php形成上传是很重要的,此demo是基于jQuery和php,代码参考http://ciy.cn/code,直接给出代码和解析。

image.png

2、代码:

前端界面:

<div class="upload" id="upload_picture" data-num="2" data-name="picture" data-type="jpg,jpeg,png,gif" action="upload.php" data-save="/upload/image/{Y}_{M}/{D}_{H}{I}{S}{Rnd}.{Ext}" data-value="http://ask.xygeng.cn/upload/image/2019_6/29_16533114419.jpg"></div>
<button id="btn">测试获取图片连接</button>

参数解析:

参数值备注
data-num文件数量
data-name返回值的name
data-type文件类型
action请求后台地址
data-save保存地址
data-value
读取值,可以修改,编辑

前端js:

		$(document).ready(function(){
		ciy_alertautoheight();
	    $("#upload_picture").upload();
		function ciy_alertautoheight()
			{
				var sitime = setInterval(function(){
				   if(!window.alertautoheight)
					   return;
				   clearInterval(sitime);
				   window.alertautoheight(document.body.clientHeight);
			   },100);
			}
		});
		//获取返回值	
		$("#btn").click(function(){
			$("#test").html($(" input[ name='picture' ] ").val());
		})

后端php服务器:

<?php
header("Access-Control-Allow-Origin:*");
error_reporting(E_ALL^E_NOTICE);
defined('PATH_ROOT') || define('PATH_ROOT', $_SERVER['DOCUMENT_ROOT'].'/'); //web根目录。
defined('PATH_DOMAIN') || define('PATH_DOMAIN', $_SERVER['HTTP_HOST'].'/'); //web根目录。
$path = get('delfile');

if(!empty($path))
{
    if(is_file(PATH_ROOT.$path))
        delfile(PATH_ROOT.$path);
    echo json_encode(succjson());
    exit;
}
$path = get('filepath');
if (@$_FILES['file'] == null)
    $ret = errjson('没有文件上传');
else if ($_FILES['file']['error'] > 0)
    $ret = errjson('上传参数出错:' . $_FILES['file']['error']);
else {
    $extfile = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
    $path = str_replace('{Y}', date('Y'), $path);
    $path = str_replace('{M}', date('m'), $path);
    $path = str_replace('{D}', date('d'), $path);
    $path = str_replace('{H}', date('H'), $path);
    $path = str_replace('{I}', date('i'), $path);
    $path = str_replace('{S}', date('s'), $path);
    $path = str_replace('{Rnd}', rand(1000,9999), $path);
    $path = str_replace('{Ext}', $extfile, $path);
    if(strpos($path,'{') !== false || strpos($path,'}') !== false)
        $ret = errjson('filepath文件名解析错误'.$path);
    else
    {
        makedir(dirname(PATH_ROOT.$path)); 
        move_uploaded_file($_FILES['file']['tmp_name'], PATH_ROOT.$path);
        $ret = succjson(array('msg'=>'http://'.PATH_DOMAIN.$path,'name'=>$_FILES['file']['name']));
    }
}
echo json_encode($ret);

/**
 * 循环建立新文件夹。
 */
function makedir($dir) {
    if (!$dir)
        return false;
    if(!is_dir($dir))
        return mkdir($dir,0777,true);
    return true;
}
function get($name, $defvalue = '') {
    if(!isset($_GET[$name]))
        return $defvalue;
    $val = $_GET[$name];
    //原始数据监控
    return $val;
}
/**
 * 静默删除文件。
 */
function delfile($file)
{
    try{unlink($file);}catch(Exception $ex){}
}
/**
 * json_函数内部使用,返回失败数据。
 * return errjson('错误信息');
 */
function errjson($error, $errcode = 0, $ext = null) {
    if(is_array($ext))
        return array('result' => false, 'errcode' => $errcode, 'msg' => $error)+$ext;
    return array('result' => false, 'errcode' => $errcode, 'msg' => $error);
}
/**
 * json_函数内部使用,返回成功数据。
 * return succjson();
 * return succjson(array('data'=>$data));
 */
function succjson($ext = null) {
    if(is_array($ext))
        return array('result' => true)+$ext;
    return array('result' => true);
}
?>
《js+php服务器上传》下载
    暂无评论,快来抢沙发吧!
×