微信社交小程序服务器,Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端...

要搞一个小型的cms内容发布系统

因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查

微信小程序其实给我们提供了这样的能力了

2a973cc4fdc8c44b47edb47b3b10e9e8.png

(也就是可以在自己已有的服务器来进行云操作,所以就可以通过这个CMS内容管理系统来对云数据库进行修改)

我们就要建立自己的web服务器--》搭建一个简易的服务器

https://koa.bootcss.com/

这个是要node版本是7以上,可以在node官网去搭建,我这边之前按照过了,直接cmd打开,通过 node -v查看版本

85868f328907e01e325851591a4b14d7.png

然后还要下载一个 cnpm,这个主要是下载第三方模块用的

https://www.cnblogs.com/biglovevolcaner/p/6707746.html

打开cmd,直接输入这位大佬博客里面的语句进行安装即可了

这些都准备好了之后,就可以开始koa2的服务器搭建了

我们选择koa的脚手架 koa-generator

https://blog.csdn.net/sinat_39049092/article/details/104575018

(跟这个博客到第三步就行)

然后我们就可以到想要搭建系统的文件中(我在d盘新建了一个weapp文件)

在cmd中输入 D:\weapp 之后输入 d:即可跳转

输入 koa2 miaomiao-cms -e

(后面的-e表示的是选择ejs模板)

5eba298715e53722f36af2da4441f8ab.png

然后安装提示,我们进入到这个建立的东西 cd miaomiao-cms

然后安装一些初始的模块

bf9cb7e8515bb1b52e5503ab94ca0199.png

输入 cnpm i

8bd807ed19fa91f7f1a425725d9f4488.png

创立完之后,就可以去启动了,我们通过 npm start

1c032a689a7cc425e8c5713aa99bf5ae.png

启动好之后,我们在网页中 输入 localhost:3000

5c89dc663261de77a4b4f04f2dcee787.png

如果看到了这个界面的话,说明web服务器就已经搭建好了,就可以在这个web服务器下做一个简易的cms系统了

之后就可以在d盘找到这个文件了

136d3998bd610238c25cd537797a8849.png

其中的public主要是放一些静态资源的

在vscode里面打开我们的文件

f27c33d13faa217f6f8ce50c28944963.png这个index其实就是类似于可以在前端显示的

实现引入 axios.min.js 可以通过npm安装,也可以使用网上开源的

通过设置:

EJS Welcome to

上传图片 :

我们可以看到

8134211153ce3fc57beb43c22d38d91e.png

注意:假如网页打不开,或者是没更新出现的html结构的话,就重新的在这个miaomiao.cms下面 npm start重新打开

随便选一张图片,onchange就是只要选择了图片的话,就会触发这个事件了,file就是拿到的我们上传的文件了

拿到这个图片要怎么传输给后台呢,这个时候就要进行文件操作了FormData这个对象来实现了

通过append 给这个param对象添加一个key为file value为 。也就是通过这个append来产生一个键值对

然后把这个对象通过axios来传输到后端

d2ee27da194cfab060073c37a2813f33.png

这就是axios中传输给后端文件的代码

在传输之前,先对 config 配置文件 进行设置,告诉我们后端这个是一个文件数据流

配置好了之后,就可以通过post把图片传输给后台的接口 uploadBannerImg

通过下面的代码

与你相遇-CMS管理系统

上传图片 :

varuploadBtn=document.getElementById('uploadBtn');

uploadBtn.οnchange= function(ev){varfile=ev.target.files[0];varparam= newFormData();

param.append('file', file);varconfig={

headers : {'Content-Type':'multipart/form-data'}

};

axios.post('/uploadBannerImg', param , config).then((res)=>{

console.log( res.data );

});

};

然后就是开始搞 定义 uploadBannerImg 这个接口了

在routes-》index.js里面,添加上这个代码

router.post('/uploadBannerImg' , async(ctx , next)=>{var files =ctx.request.files;

console.log( files );

})

5ad0a9bb436f3d9bbd51e3b215d713de.png

我们添加一个图片,然后可以看到在后端中

97036b6e69780da3835bc0687de28a1c.png

会发现404了,我们再通过 npm start来开启

先要结束上面的操作,通过 ctrl+c 弹出

9ab311835cee3a16c0534ad0b7558b68.png

然后输入y之后,通过npm start,然后再次上传图片

350766d80fc2a6551a0242b55acb689e.png

打印出来了这个,说明file为undefined 也就是没拿到这个图片了

这个是因为koa默认是得不到我们上传文件的东西的,还需要下载一个第三方的模块来辅助完成这个功能才行

通过在miaomiao-cms目录下的cmd 输入  cnpm i -S koa-body

9666b1340392afcd899ee7fbc5f1cb1d.png

下载好了之后,在app.js里面,引入koa-body

const koaBody = require('koa-body')

然后在app.js里面做一个简单的配置

app.use(koaBody({

multipart :true,//指定是否可以上传多张

formidable : {

maxFileSize :200*1024*1024 //设置上传文件大小最大限制,默认2M

}

}))

(不配置这个,用默认的也是可以的)

搞好之后,再把项目 npm start启动一下

上传图片之后,还是显示 undefined

1a754083b599e106905f0b5bb0aff5ab.png

原因就是index.js里面的files少了一个s

ded471a94a09144902ab2b7270e8e8a7.png

这里的use多了一个r

把这两个代码书写错误改好了之后,再上传就可以看到结果了

b5062f0357f5b0c878f23d7b7da01041.png

所以就实现了把图片传给后台了,然后我们就要把这个信息传给云平台了(以上完成了前台的文件传输到了后台)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java go

熟练掌握java技术,对多线程、数据结构有清晰的认识; 熟悉MySQL/Oracle数据库,熟悉关系数据库应用设计开发; 熟悉Spring/MyBatis/Freemarker等一种或者多种框架; java基础扎实,熟练掌握目前主流的开源框架&a…

了解如何解决OSGI捆绑包

我想回顾一下OSGI包如何解决并使用Apache Karaf进行演示。 Karaf是基于Apache Felix内核的功能齐全的OSGI容器,并且是Apache ServiceMix集成容器的基石。 对于第一部分,我将讨论OSGI框架如何解决捆绑包。 在第二部分中,我将使用Apache Karaf演…

文件共享服务器imac,iMac怎么在网络上共享设备windows文件夹和服务 | MOS86

本章通过向您展示如何在网络和Mac和Windows计算机之间共享文件,文件夹和设备,帮助您充分利用您的iMac网络连接。→使用Macs共享文件和文件夹使用AirDrop和文件共享→与Windows 7计算机共享文件→设置共享权限→使用共享表快速在线共享文件→共享和访问网…

【转】 简单理解Socket

题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人;但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有意思,动手写…

.NET基础

.NET C# ASP.NET关系:.NET是一个平台,提供程序运行的虚拟机环境和类库。 C#是.Net平台上的一种语言,其他语言还有VB.NET PowerShell等。 ASP.NET是在.NET下的网站开发技术。 安装.NET FrameWork就可以运行。VS集成安装了.NET FrameWork. 控制…

业务活动监视器(BAM)2.0带来的革命

生产兼具精益和企业价值的中间件是一项艰巨的工作。 它要么不存在,要么需要创新的思维(很多),并且需要在实现中反复进行。 业务风险很大,但是如果您做对了,它就会使您领先于其他任何公司。 这就是为什么我们…

oracle销售服务器吗,oracle 服务器 版本

oracle 服务器 版本 内容精选换一换Atlas 800 训练服务器(型号 9010)安装上架、服务器基础参数配置、安装操作系统等操作请参见《Atlas 800 训练服务器 用户指南 (型号9010)》。Atlas 800 训练服务器(型号 9010)适配操作系统如表1所示。请参考表2下载驱动和固件包。Atlas 800 训…

Vue组件间通信:一个例子学会Vue组件-Vue.js学习总结)(转载)

详情请点击 http://www.jianshu.com/p/9ad1ba89a04b转载于:https://www.cnblogs.com/zhongjiang/p/6694459.html

必填字段的自定义JSF验证器

实现EditableValueHolder接口的JSF组件具有两个属性“ required”和“ requiredMessage” –一个标志,指示用户需要输入/选择非空值,以及一个用于验证消息的文本。 我们可以使用它,但是它不够灵活,我们不能直接在视图中&#xff0…

java 转码%2f%_JS和JAVA中常用的编码转码函数

js中escape,encodeURI,encodeURIComponent函数和unescape,decodeURI和decodeURIComponent函数的功能1.escape方法对String对象编码,escape方法返回一个包含了"转义序列"的字符串值。除了ASCII字母和数字,以及这几个符号 *-/._外(共有1052769个字符不会被编…

mybatis 下划线转驼峰配置

一直以来&#xff0c;在sqlmap文件中&#xff0c;对于数据库中的下划线字段转驼峰&#xff0c;我们都是通过resultmap来做的&#xff0c;如下&#xff1a; <resultMap id"ISTableStatistics" type"com.medsoft.perfstat.pojo.ISTableStatistics" > &…

Python练习-迭代器-模拟cat|grep文件

代码如下: 1 # 编辑者&#xff1a;闫龙2 def grep(FindWhat):3 fopen("a.txt","r",encoding"utf8")#以只读的方式打开a.txt文件4 while True:5 try:6 fline next(f).strip()#由于File类型本身就是一个迭代器,所以直…

Spring和JSF集成:转换器

使用任何Web框架时&#xff0c;都不可避免地需要将用户输入的数据从String为其他类型。 尽管Spring和JSF在设计和功能上确实有很大的不同&#xff0c;但它们都具有转换器策略来处理此问题。 让我们从春天开始。 Spring 3引入了一个全新的转换框架&#xff0c;该框架允许将任何类…

nacos配置ap_Nacos 1.0.0 功能预览

本文来自于我的个人主页&#xff1a;Nacos 1.0.0 功能预览&#xff0c;转载请保留链接 ;)Nacos 1.0.0 是正式 GA 的版本&#xff0c;在架构、功能和API设计上进行了全方位的重构和升级&#xff0c;1.0.0版本标志着Nacos的架构已经稳定&#xff0c;API列表最终确定。升级到1.0.0…

poj 2229 Sumsets

题目大意&#xff1a; 一个数由2的幂次数的和构成&#xff0c;问有几种构成方式&#xff1f; 主要是找规律 代码如下 1 #include <cstdio>2 #include <cstring>3 int n;4 #define M 10000000005 int dp[1000002];6 7 int main(int argc, char const *argv[])8 {9 …

html 甘特图_Rplotly|交互式甘特图(Gantt chart)项目管理/学习计划

甘特图(Gantt chart)&#xff0c;又常被称为横道图或者条状图&#xff0c;是现代企业项目管理领域运用最为广泛的一种图示。就是通过条形来显示项目的进度、时间安排等相关情况的。项目管理外&#xff0c;也可以用来管理学习计划。绘制甘特图的工具有很多&#xff0c;本文介绍使…

使您的Spring Security @Secured注释更干燥

最近&#xff0c;Grails用户邮件列表中的一个用户想知道在定义Secured批注时如何减少重复 。 在Java批注中指定属性的规则非常严格&#xff0c;因此我看不到直接执行他所要求的方法的方法。 使用Groovy并没有真正的帮助&#xff0c;因为Groovy类中的注释大部分与Java中的注释几…

阅读《大型网站技术架构》 第三章心得

今天阅读了《大型网站技术架构》 的第三章&#xff0c;这一章主要讲解了大型网站核心架构要素&#xff0c;并且概括的讲解了相应的实现方法。 软件架构除了系统功能需求外&#xff0c;还需要关注性能、可用性、伸缩性、扩展性、安全性。 其中性能是网站的重要指标。优化网站性能…

easyui数据表格重置_数据库三种删除方式

第一种 使用delete 语句特点&#xff1a;delete 属于数据库操纵语言DML&#xff0c;表示删除表中的数据&#xff0c;删除过程是每次从表中删除一行&#xff0c;并把该行删除操作作为事务记录在日志中保存可以配合事件&#xff08;transaction&#xff09;和 回滚&#xff08;ro…

main函数之间的代码操作

全局对象的构造函数会在main函数之前执行。转载于:https://www.cnblogs.com/yingl/p/5817123.html