天,是JavaScript回炉的第六十六天
上传图片和点击图片并在网页上展示
//提交图片使用的是jquery的ajax传递图片,后端进行图片储存
function picture(){
let number = arguments[0].length;
let data = new FormData();
data.append('number',number)
for(let i=0;i<number;i++){
data.append("file"+i, arguments[0][i]);
}
$.ajax({
type:'POST',
url:'http://127.0.0.1:8000/index_fontsize_addimg',
dataType: "json",
data: data,
processData: false,
contentType: false,
success: function () {
alert('提交成功')
}
})
}
//点击图标展示输入框
document.getElementById('input02').onclick = function(){
let arr = new Array();
document.getElementById('div01').style.display = 'block';
let text = document.querySelector("#textarea1");
let content;
let count = 0;
let fileData;
text.addEventListener("keyup", function(e) {
content = text.value;
})
document.getElementById('input01').onchange = function() {
count+=1;
fileData = this.files[0];
arr.push(fileData)
let photo = fileData.name;
if(content == undefined){
document.getElementById('textarea1').value ='['+count+'*'+photo+']';
}else{
document.getElementById('textarea1').value = content+'['+count+'*'+photo+']';
}
}
//点击确定写入数据库
document.getElementById('input03').onclick = function(){
let name = document.getElementById('input04').value;
let photo1 = document.getElementById('textarea1').value;
//图片传递给函数 picture()
picture(arr)
let url = 'http://127.0.0.1:8000/index_fontsize_add';
data={
name:name,
content:photo1
}
//ajax的函数写入功能
writeMysql(data,url);
}
}
//ajax的函数写入功能
function writeMysql(Data,Url){
let url = Url;
let data = Data;
let ajx = new XMLHttpRequest();
ajx.open('POST',url,true);
ajx.onreadystatechange = function(){
if(ajx.readyState == 4){
if(ajx.status == 200){
let content = JSON.parse(ajx.responseText)['data'][0];
//获取值传递给mysqlExhibition()函数
mysqlExhibition(content)
}
}
}
ajx.send(JSON.stringify(data));
}
//该函数主要是对数据库的内容进行提炼
function mysqlExhibition(exhibition){
let str = exhibition.content
let str01 = exhibition
let str1 = str.replace(/\[(.+?)\]/g,'')
let str03 = (str.match(/\*/g).length);
//把值传递给pic()函数
pic(str01,str1,str03)
}
//页面展示函数,主要是创建图片,这里我觉得一张博客写入5张图片应该可以了
function pic(exhibition,str1,str03){
let Url = 'http://127.0.0.1:8000/media/'
let div = document.getElementById('div03');
let p = document.createElement('p');
div.appendChild(p);
p.innerText = str1;
console.log(str03)
console.log(exhibition)
let arr = [exhibition.img0,exhibition.img1,exhibition.img2,exhibition.img3,exhibition.img4,exhibition.img5,exhibition.img6,exhibition.img7,exhibition.img8,exhibition.img9]
for(let i=0;i<str03;i++){
console.log(arr[i])
let img = document.createElement('img');
div.appendChild(img);
img.src = Url+arr[i];
img.id = 'img01';
}
}
//展示表格,博客的内容
function selectMysql(){
let AJX = new XMLHttpRequest();
let url = 'http://127.0.0.1:8000/index_fontsize';
AJX.open('GET',url,true);
AJX.onreadystatechange = function(){
if(AJX.readyState == 4){
if(AJX.status == 200){
let number = JSON.parse(AJX.responseText)['data'].length;
let content = JSON.parse(AJX.responseText)['data']
let table = document.getElementById('table01');
for(let i=0;i<number;i++){
let tr = document.createElement('tr');
let td = document.createElement('td');
let td1 = document.createElement('td');
let td2 = document.createElement('td');
table.appendChild(tr);
tr.appendChild(td);
tr.appendChild(td1);
tr.appendChild(td2);
td.innerText = content[i].name;
td2.innerText = '查询';
td2.style.background='blue';
}
}
}
}
AJX.send();
}
selectMysql();
//点击博客查询按键
document.getElementById('table01').addEventListener('click',function(e){
let data = {
name:e.path[1].children[1].innerText
}
let url = 'http://127.0.0.1:8000/index_fontsize_select';
//传递给writeMysql()函数
writeMysql(data,url)
})
TML编辑器粘贴word图片,web编辑器粘贴word图片,web富文本编辑器粘贴word,前端编辑器粘贴word内容,前端web编辑器粘贴word,支持快捷键操作(Ctrl+V),
粘贴后word图片自动上传到服务器中,然后自动将图片和文字HTML添加到编辑器中。
用户这边日常的编辑工作基本上都是在word中完成的,用户把内容编辑好后希望能够直接一键(通过快捷键)粘贴到网站后台新闻发布页面的编辑器中,这样能够节省不少时间。提高工作效率,信息发布效率。
用户发布新闻的时候是从word里面复制图片和文字,然后将word图文内容粘贴到web富文本编辑器中,希望能够将word的图片自动上传到服务器中,服务器地址能够自定义,后端的话需要支持任意开发语言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。只要是基于标准HTTP协议的都要支持。如果能够不装控件最好,
实际上装不装都无所谓,只要好用。
1.下载示例:
http://www.ncmem.com/webapp/wordpaster/versions.aspx
2.复制WordPaster插件目录
3.引入插件文件
注意:不要重复引入jquery,如果您的项目已经引入了jq,则不用再引入jq-1.4
4.在工具栏中增加插件按钮
6.初始化控件
注意:
1.如果接口字段名称不是file,请配置FileFieldName。ueditor接口中使用的upfile字段
参考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45
2.如果接口返回JSON,请配置ImageMatch
参考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1
3.如果接口返回的图片地址没有域名,请配置ImageUrl
参考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936
4.如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。或取消权限验证。
参考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3
效果
文详细介绍了如何在Axure中创建一个上传图片列表的原型模板,包括具体的操作步骤和交互设计,对于需要在产品原型中实现图片上传功能的产品经理和设计师来说,这是一个非常实用的教程。阅读本文,你将学会如何制作一个交互式的图片上传列表,希望对你有所帮助。
上传图片列表常用于许多不同类型的应用和系统中,包括社交媒体平台、电子商务网站、博客和内容管理系统、在线相册和图像存储服务、项目管理工具等,发挥着重要作用,帮助用户管理、组织和展示他们上传的图片,从而丰富内容、提高用户体验,并支持各种业务需求。
所以今天作者就教大家怎么在Axure制作一个上传图片列表的原型模板,具体效果如下所示:
1、点击上传方框,打开显示本地资源的窗口,里面可以选择本地的资源。
2、如果选择的不是图片格式,弹出弹窗提示。
3、如果选择的是图片格式,将图片回显,然后显示下一个上传方框。
https://axhub.im/ax9/ca3dd539f46dc856/#g=1&p=上传图片(列表效果2)
这里需要的材料很简单主要包括一个上传框的图片,一个文本框和一个文本标签。
图片我们命名为vigopic1,文本框命名为vigotext1,文本标签命名为click1。
图片默认选择上传框的图片。
文本标签,用于触发后续交互。
文本框输入类型选择输入框,我们通过js代码可以调用选择本地图片,选择图片后进行回显,之前在上传图片那章教程里面,有详细讲解,大家可以先去学习那章教程,然后再回来学习上传之后怎么触发继续上传新的图片。
整体摆放如下图所示,只显示图片,文本标签和文本框放置在图片底部,用图片遮挡着他俩。
如果想做成列表,我们需要总共上传多少个,就复制几个,例如朋友圈案例是最多上传9个,那就复制多8个,总数九个,前面只有第一个默认显示,后面的默认隐藏即可,然后摆放整齐就可以了,本演示案例是做了一个最多上传12张图片的案例,如果有需要更多的,也可以按照下面方法自行添加。
对了,因为js代码是根据元件名来上传和回显的,所以文件名要唯一,前面第一个组合,我们把图片命名为vigopic1,文本框命名为vigotext1,文本标签命名为click1;那第二个组合就要改成图片命名为vigopic2,文本框命名为vigotext2,文本标签命名为click2;那第3个组合就要改成图片命名为vigopic3,文本框命名为vigotext3,文本标签命名为click3……如此类推。2. 交互制作
在原有的代码基础上,我们可以增加一个判断,就是上传的是否为图片格式,常见的图片格式包括png、jpg、jpeg,案例中用的是这三种格式,如果需要增加其他图片格式,可以自行添加代码如:
if(fileType==”image/png”||fileType==”image/jpeg”||fileType==”image/jpg”)
如果上传不符合格式,我们用 alert代码,调出系统弹窗提示即可,例如 alert( “请上传图片(格式JPG、JPEG、PNG)!”);
如果上传的格式符合,那就回显图片,这里和之前上传图片不同的是,回显之后,我们要显示下个一个上传框,以第一个上传框上传回显后为例,我们要从代码回到axure的元件里面,这里我们需要借助文本标签click1,我们在文本标签鼠标单击时,我们用显示的交互,将第二个组合显示出来就可以了。
现在剩下的问题就是,上传回显完之后,怎么触发这个文本标签鼠标单击的事件呢?
我们可以在代码里增加一行,用jQuery 事件 – click 方法,模拟点击按钮(或执行点击按钮时的操作),我们要选择Axure里名为click1的元件,相当于选择页面中标有 data-label 属性值为 ‘click1′ 的元素,所以整行代码是(“[data-label=’click1’]”).click;选择页面中标有 data-label 属性值为 ‘click1’ 的元素,并模拟用户对这个元素的点击,点击之后就触发上面单击时的交互,显示第一个组合。
组合2的话也是同一个原理,我们把图片命名为vigopic1、文本框命名为vigotext1、文本标签命名为click1的目的也是为了方便后续修改,在第二个组合里的,我只需要代码和名字里的’1’改成’2’,然后交互事件显示组合2改成显示组合3就可以了,改起来也非常方便。
后续的345678……组合,也是同一个道理。
那以上就是本期教程的全部内容,感兴趣的同学们可以动手试试哦,感谢您的阅读,我们下期见。
本文由人人都是产品经理作者【AI产品人】,微信公众号:【Axure高保真原型】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
*请认真填写需求信息,我们会在24小时内与您取得联系。