js jquery input的type=file上传文件 选择后 触发事件[带PHP上传代码]

4 篇文章 0 订阅

CDN jquery

<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>

jquery 选择后触发代码

//jquery
<script>
	$("#file1").change(function(e){
		var filec = $("#file1").get(0).files[0];
		if(filec){
			//文件已经选择好 下面可以写自己的上传代码了
		}
	})
</script>

//js 原生
<script>
	document.getElementById("input").addEventListener("change",function () {
		var filec = document.getElementById("file1").files[0];
		if(filec){
			//文件已经选择好 下面可以写自己的上传代码了
		}
	});
</script>

整合代码

<input type="file" id="file1"/>
</br></br><img src="" id="img" style="max-width: 220px;max-height: 220px;">
<input type="hidden" class="cimg" name="img" value=""/>
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<script>
	$("#file1").change(function(e){
		var sc = $("#file1").get(0).files[0];
		if(sc){
			upload_img();
		}
	})
    function upload_img() {
            var formData = new FormData();
            formData.append("file", document.getElementById("file1").files[0]);   
            $.ajax({
                url: "/upload_img.php",
                type: "POST",
                data: formData,
                dataType:"json",
                contentType: false,
                processData: false,
                success: function (data) {
                    if (data.status === true) {
                        $(".cimg").val(data.img);
						$("#img").attr("src", data.img);
                    }else{
						alert(data.img);
                    }
                }
            });
        }
</script>

upload_img.php文件代码

<?php
//博客地址:https://blog.csdn.net/qq_21363853
//代码比较简陋 有技术的自行补全优化
//重复上传文件 只输出文件路径 不保存多个
define("img_chucun_file", "static/uploads");
/获取文件上传后缀
function get_extension($file)
{
    return substr($file, strrpos($file, '.') + 1);
}
function get_json($val, $status = false)
{
    $data = array("status" => $status, "img" => $val);
    return json_encode($data);
}
$upfile = $_FILES["file"];
if (is_uploaded_file($upfile['tmp_name'])) {
    if ($upfile["type"] == "image/gif" || $upfile["type"] == "image/jpeg" || $upfile["type"] == "image/png" || $upfile["type"] == "image/pjpeg") {
        $error = $upfile["error"];
        if ($error == 0) {
        } elseif ($error == 1) {
            echo get_json("超过了文件大小");
            exit;
        } elseif ($error == 2) {
            echo get_json("超过了文件大小");
            exit;
        } elseif ($error == 3) {
            echo get_json("文件只有部分被上传");
            exit;
        } elseif ($error == 4) {
            echo get_json("上传没有文件");
            exit;
        } else {
            echo get_json("上传文件大小为0");
            exit;
        }
		//重命名文件
        $file_name = md5(time().rand(9999999999999,999999999999999999999)) . "." . get_extension($upfile["name"]);
        if (!file_exists($_SERVER['DOCUMENT_ROOT'].'/'.img_chucun_file . "/")) {
            mkdir($_SERVER['DOCUMENT_ROOT'].'/'.img_chucun_file . "/");
        }
        if (move_uploaded_file($upfile["tmp_name"], $_SERVER['DOCUMENT_ROOT'].'/'.img_chucun_file . "/" . $file_name) !== false) {
				$file='/'.img_chucun_file . '/';
                $mulu = $_SERVER['DOCUMENT_ROOT'].$file;
                $filename2 = $mulu . $file_name;
                //重复上传文件 只输出文件路径 不保存多个
				$md5=md5(file_get_contents($filename2));
				$imgarr = getimagesize($filename2);
                $file_path = $md5 . "." . get_extension($upfile["name"]);
                rename($filename2, $mulu . $file_path);
                @chmod($mulu . $file_path, 0644);
                echo get_json("/" . img_chucun_file . "/" . $file_path, true);
        }
    } else {
        echo get_json("操作失败,请上传jpg,gif,png等格式的图片");
    }
}
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 由于安全性考虑,浏览器不允许通过JavaScript获取input type=file文件内容。因此,你需要使用其他方法来获取该文件内容。 一种可行的方法是使用HTML5的File API。以下是一个使用jQueryFile API获取文件内容的示例: HTML代码: ``` <input type="file" id="fileInput"> <button id="btn">获取文件内容</button> <div id="fileContent"></div> ``` JavaScript代码: ``` $(function() { $('#btn').click(function() { var file = $('#fileInput')[0].files[0]; if (file) { var reader = new FileReader(); reader.onload = function(e) { $('#fileContent').text(e.target.result); }; reader.readAsText(file); } else { $('#fileContent').text('请选择文件'); } }); }); ``` 这段代码首先获取了input type=file元素的文件对象,然后使用FileReader对象读取该文件内容,并将其显示在页面上。请注意,由于安全性限制,该代码只能在本地运行,无法在某些环境中使用。 ### 回答2: 使用Bootstrap无法直接获取input type=file文件内容,因为Bootstrap是一个前端框架,主要用于构建页面结构和样式。而获取input type=file文件内容需要使用JavaScript来实现。 要获取input type=file文件内容,可以使用以下步骤: 1. 通过JavaScript获取input元素,可以使用document.getElementById或者document.querySelector来获取指定的input元素。 2. 给input元素添加change事件监听器,当用户选择文件后会触发change事件。 3. 在change事件的处理函数中,可以通过event.target.files[0]来获取选择文件。event.target是事件的目标元素,files属性是一个文件列表,[0]表示获取选中的第一个文件。 4. 可以使用FileReader对象来读取文件内容,通过FileReader.onload事件监听文件内容的读取成。 5. 在FileReader.onload事件的处理函数中,可以通过event.target.result来获取文件内容,result是一个字符串表示文件的内容。 具体代码如下: ```html <input type="file" id="myFile"> <script> document.getElementById('myFile').addEventListener('change', function(event) { var file = event.target.files[0]; var reader = new FileReader(); reader.onload = function(event) { var content = event.target.result; console.log(content); }; reader.readAsText(file); // 以文本形式读取文件内容 }); </script> ``` 以上代码是一个简单示例,当用户选择文件后,会将文件内容输出到控制台中。实际应用中,可以根据需要将内容显示到页面中或进行其他处理。 ### 回答3: 要使用Bootstrap获取`<input type="file">`的文件内容,可以通过以下步骤来实现: 1. 在HTML中定义一个`<input>`元素,并设置`type="file"`属性。这将创建一个文件上传按钮,用于选择上传文件。 ```html <input type="file" id="fileUpload"> ``` 2. 在JavaScript中,找到这个`<input>`元素,并添加一个`change`事件监听器,以便在选择文件触发相应的操作。 ```javascript $(document).ready(function() { $("#fileUpload").change(function() { var file = this.files[0]; // 获取选择文件 var reader = new FileReader(); reader.onload = function(e) { var fileContent = e.target.result; // 获取文件内容 // 这里可以对文件内容进行处理或展示 }; reader.readAsText(file); // 以文本形式读取文件内容 }); }); ``` 3. 在`change`事件监听器中创建一个`FileReader`对象,并为其设置一个`onload`事件。当文件加载成后,`onload`事件将被触发。 4. 在`onload`事件中,可以通过`e.target.result`来获取文件的内容。根据需求,可以对文件内容进行进一步的处理或展示。 需要注意的是,使用Bootstrap只是用来美化或优化页面样式和布局。要获取文件内容,仍然需要使用JavaScript中的`FileReader`对象来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧人站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值