预览待上传的本地图片

 
<form name="form5" id="form5" method="post" action="#">
<input type="file" name="file5" id="file5" onchange="preview5()"/>
</form>
<script type="text/javascript">
function preview5(){
var x = document.getElementById("file5");
if(!x || !x.value) return;
var patn = //.jpg$|/.jpeg$|/.gif$/i;
if(patn.test(x.value)){
var y = document.getElementById("img5");
if(y){
y.src = "file://localhost/" + x.value;
}else{
var img=document.createElement("img");
img.setAttribute("src","file://localhost/"+x.value);
img.setAttribute("width","120");
img.setAttribute("height","90");
img.setAttribute("id","img5");
document.getElementById("form5").appendChild(img);
}
}else{
alert("您选择的似乎不是图像文件。");
}
}
</script>
 
来自:http://www.cnblogs.com/bgming/archive/2005/09/30/247367.html
内容概要:本文详细介绍了基于Simulink平台构建的锂电池供电与双向DCDC变换器智能切换工作的仿真模型。该模型能够根据锂离子电池的状态荷电(SOC)自动或手动切换两种工作模式:一是由锂离子电池通过双向DCDC变换器向负载供电;二是由直流可控电压源为负载供电并同时通过双向DCDC变换器为锂离子电池充电。文中不仅提供了模式切换的具体逻辑实现,还深入探讨了变换器内部的电压电流双环控制机制以及电池热管理模型的关键参数设定方法。此外,针对模型使用过程中可能遇到的问题给出了具体的调试建议。 适用人群:从事电力电子、新能源汽车、储能系统等领域研究和技术开发的专业人士,尤其是那些希望深入了解锂电池管理系统及其与电源转换设备交互机制的研究者和工程师。 使用场景及目标:适用于需要评估和优化锂电池供电系统的性能,特别是涉及双向DCDC变换器的应用场合。通过学习本文提供的理论知识和实践经验,可以帮助使用者更好地理解和掌握相关技术细节,从而提高实际项目的设计效率和可靠性。 其他说明:为了确保仿真的准确性,在使用该模型时需要注意一些特定条件,如仿真步长限制、电池初始SOC范围以及变换器电感参数的选择等。同时,对于可能出现的震荡发散现象,文中也提供了一种有效的解决办法。
### 使用 ElementUI 实现图片上传本地服务器 为了实现在 ElementUI 中将图片上传本地服务器的功能,可以利用 `el-upload` 组件来构建上传界面。此组件提供了多种配置选项以便于开发者自定义上传行为。 #### HTML 结构与基本设置 创建一个简单的HTML结构用于放置上传按钮和其他必要的DOM元素: ```html <template> <div id="app"> <!-- 图片上传控件 --> <el-upload class="upload-demo" action="/api/upload" // 设置请求地址为本地API端点 :on-preview="handlePreview" :on-remove="handleRemove" :before-upload="beforeAvatarUpload" multiple :limit="3" :file-list="fileList"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> <!-- 查看大图对话框 --> <el-dialog v-model="dialogVisible" size="tiny"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </div> </template> ``` 上述代码片段展示了如何通过指定action属性指向后端处理接口,并设置了几个事件处理器函数名以及一些额外参数如最大数量限制等[^1]。 #### JavaScript 方法实现 接下来,在Vue实例内部编写相应的逻辑方法以响应用户的交互操作: ```javascript <script> export default { data() { return { fileList: [], // 存储已上传成功的文件列表 dialogImageUrl: '', // 当前查看的大图URL dialogVisible: false// 控制模态框显示状态 }; }, methods: { handleRemove(file, fileList) { // 移除文件时触发 console.log(file, fileList); }, handlePreview(file) { // 点击缩略图预览时触发 this.dialogImageUrl = file.url; this.dialogVisible = true; }, beforeAvatarUpload(file){ // 文件上传之前执行的钩子函数 const isJPGorPNG = (file.type === 'image/jpeg' || file.type === 'image/png'); const isLt2M = file.size / 1024 / 1024 < 2; if (!isJPGorPNG) { this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!'); } if (!isLt2M) { this.$message.error('上传头像图片大小不能超过 2MB!'); } return isJPGorPNG && isLt2M; } } } </script> ``` 这段JavaScript部分包含了三个主要的方法:当用户尝试移除某个文件时会调用`handleRemove()`;点击某张图片进行预览则会激活`handlePreview()`;而在实际发送HTTP POST请求给服务端之前,则由`beforeAvatarUpload()`负责验证待传入的数据是否满足条件[^2]。 #### 后端 API 接口设计 最后一步是在服务器上搭建好接收这些POST请求的服务程序。这里假设采用Node.js作为运行环境,Express框架简化路由管理过程: ```nodejs const express = require('express') const multer = require('multer') // 处理multipart/form-data编码格式数据中间件 const app = express() let storage = multer.diskStorage({ destination: function(req, file, cb){ let dir='./uploads/'; mkdirp(dir,(err)=>{cb(null,dir)}); }, filename:function(req,file,cb){ cb(null,new Date().toISOString()+path.extname(file.originalname)) } }) var upload = multer({storage}).array('files',12) app.post('/api/upload',(req,res)=>{ try{ upload(req,res,function(err){ if(!err){ res.json({"status":"success","msg":"File uploaded successfully"}); }else{ throw new Error(); } }) }catch(e){ res.status(500).json({'error':e}); } }) ``` 该段Node.js代码使用Multer库解析来自客户端提交过来的二进制流形式的照片资料,并将其保存到项目根目录下的`./uploads/`路径下[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值