当前位置: 首页 > news >正文

网站的内容管理系统响应式手机网站制作

网站的内容管理系统,响应式手机网站制作,做网站支付系统,公司做网站需要提供什么因为要用到这样一个场景#xff0c;需要下载系统的使用教程#xff0c;所以在前端项目中就提供了一个能够下载系统教程的一个按钮#xff0c;供使用者进行下载。 所以就试着写一下这个功能#xff0c;以一个demo的形式进行演示#xff0c;在学习的过程中也发现了中文路径…因为要用到这样一个场景需要下载系统的使用教程所以在前端项目中就提供了一个能够下载系统教程的一个按钮供使用者进行下载。 所以就试着写一下这个功能以一个demo的形式进行演示在学习的过程中也发现了中文路径的严重问题 首先描述一下接下来展示的代码的效果 就是在界面上又对应的文本和下载对应文件的按钮这里因为是1.0版本就不对实现这个功能做成函数进行封装了如果有时间的话还可以封装成一个函数通过传参来下载指定的文件。 这里就是真正的符合应用场景的前端通过发送请求来下载服务器上的文件这样的场景而不是通过ZZAI回答的那样使用window.location.href的方式吐槽一波 直接上完整的代码随后进行介绍 后端代码【node.js】 const express require(express); const path require(path); const cors require(cors); // 引入 CORS 中间件 const fsrequire(fs); const app express(); const PORT 3001; // 启用 CORS允许所有域访问仅用于测试生产环境中应限制允许的域 app.use(cors());// 设置静态文件的目录为 public app.use(express.static(path.join(__dirname, public))); console.log(12,path.join(__dirname, public/操作手册.pdf)) // 定义一个路由来返回文件的 URL 而不是直接发送文件 app.get(/api/download-url/操作手册.pdf, (req, res) {const filePath path.join(__dirname, public/操作手册.pdf);res.json({ fileUrl: http://localhost:${PORT}/download/操作手册.pdf }); }); // 修改后的路由用于返回 abc.txt 文件的内容 app.get(/check-file/abc.txt, (req, res) {const filePath path.join(__dirname, public/abc.txt);fs.readFile(filePath, utf8, (err, data) {if (err) {if (err.code ENOENT) {res.status(404).send(文件不存在);} else {res.status(500).send(读取文件时出错: err.message);}} else {res.send(data); // 返回文件内容}}); }); app.get(/download/abc.txt, (req, res) {const filePath path.join(__dirname, public/abc.txt);fs.readFile(filePath, (err, data) {if (err) {res.status(500).send(文件读取错误);} else {res.setHeader(Content-Disposition, attachment; filenameabc.txt);res.set(Content-Type, text/plain);res.send(data);}}); }); app.get(/download/操作手册.pdf, (req, res) {const filePath path.join(__dirname, public/操作手册.pdf);fs.readFile(filePath, (err, data) {if (err) {res.status(500).send(文件读取错误);} else {res.setHeader(Content-Disposition, attachment; filename操作手册.pdf);res.set(Content-Type, application/pdf);res.send(data);}}); }); app.get(/download/b.pdf, (req, res) {const filePath path.join(__dirname, public/b.pdf);fs.readFile(filePath, (err, data) {if (err) {res.status(500).send(文件读取错误);} else {res.setHeader(Content-Disposition, attachment; filenameb.pdf);res.set(Content-Type, application/pdf);res.send(data);}}); }); app.get(/download/a.pdf, (req, res) {const filePath path.join(__dirname, public/a.pdf);fs.readFile(filePath, (err, data) {if (err) {res.status(500).send(文件读取错误);} else {res.setHeader(Content-Disposition, attachment; filenamea.pdf);res.set(Content-Type, application/pdf);res.send(data);}}); }); app.get(/download/一.pdf, (req, res) {const filePath path.join(__dirname, public/一.pdf);fs.readFile(filePath, (err, data) {if (err) {res.status(500).send(文件读取错误);} else {res.setHeader(Content-Disposition, attachment; filename一.pdf);res.set(Content-Type, application/pdf);res.send(data);}}); }); // 启动服务器 app.listen(PORT, () {console.log(服务器启动成功访问地址为http://localhost:${PORT}); }); 后端是用node写的服务器因为这些语法还是js所以对于前端人员来说还是比较好理解的使用的是express框架。 前端访问界面 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0title文件下载示例/title /head bodyh1点击按钮下载 abc.txt/h1button iddownloadButton下载 abc.txt/buttonh1点击按钮下载 a.pdf/h1button iddownloadButton2a.pdf/buttonh1点击按钮下载 操作手册.pdf/h1button iddownloadButton3下载操作手册.pdf/buttonh1点击按钮下载 操作手册a.pdf/h1button iddownloadButton4b.pdf/buttonh1点击按钮下载 操作手册一.pdf/h1button iddownloadButton5一.pdf/buttonscriptdocument.getElementById(downloadButton).addEventListener(click, async function() {try {const response await fetch(http://localhost:3001/download/abc.txt);if (!response.ok) {throw new Error(Network response was not ok);}const blob await response.blob();const url window.URL.createObjectURL(blob);const a document.createElement(a);a.style.display none;a.href url;a.download abc.txt;document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);} catch (error) {console.error(下载文件时出错:, error);}});document.getElementById(downloadButton2).addEventListener(click, async function() {try {const response await fetch(http://localhost:3001/download/a.pdf);if (!response.ok) {throw new Error(Network response was not ok);}const blob await response.blob();const url window.URL.createObjectURL(blob);const a document.createElement(a);a.style.display none;a.href url;a.download a.pdf; // 保持文件名和扩展名不变document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);} catch (error) {console.error(下载a.pdf 文件时出错:, error);}});document.getElementById(downloadButton3).addEventListener(click, async function() {try {const response await fetch(http://localhost:3001/download/操作手册.pdf);if (!response.ok) {throw new Error(Network response was not ok);}const blob await response.blob();const url window.URL.createObjectURL(blob);const a document.createElement(a);a.style.display none;a.href url;a.download 操作手册.pdf; // 保持文件名和扩展名不变document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);} catch (error) {console.error(下载操作手册.pdf 文件时出错:, error);}});document.getElementById(downloadButton4).addEventListener(click, async function() {try {const response await fetch(http://localhost:3001/download/b.pdf);if (!response.ok) {throw new Error(Network response was not ok);}const blob await response.blob();const url window.URL.createObjectURL(blob);const a document.createElement(a);a.style.display none;a.href url;a.download b.pdf; // 保持文件名和扩展名不变document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);} catch (error) {console.error(b.pdf 文件时出错:, error);}});document.getElementById(downloadButton5).addEventListener(click, async function() {try {const response await fetch(http://localhost:3001/download/一.pdf);if (!response.ok) {throw new Error(Network response was not ok);}const blob await response.blob();const url window.URL.createObjectURL(blob);const a document.createElement(a);a.style.display none;a.href url;a.download 一.pdf; // 保持文件名和扩展名不变document.body.appendChild(a);a.click();window.URL.revokeObjectURL(url);document.body.removeChild(a);} catch (error) {console.error(一.pdf 文件时出错:, error);}});/script /body /html 来看运行的效果 当我们点击下载abc.txt按钮的时候对应的文件就会下载 因为我下载了多个同名文件自动重命名为abc(2).txt。 来看服务器上的文件结构 我这里下载的就是服务器上的public文件夹中的文件因为这样符合实际因为我们要下载的资源肯定是要上传的远程服务器上不可能在本地。这里我们可以再本地下载服务器上的文件。 因为一开始写的版本是针对文本文件的所以设置的请求头和content-type会和下面的pdf文件类型的设置会不一样 然后测试pdf文件的下载也是可以正常下载的因为一开始我的pdf是中文命名的所以就会出现了这个错误【下载操作手册.pdf】 于是就开始检查代码发现并没有问题一开始试着从网上找问题发现可能是中文导致的问题所以就试着把中文改成了英文发现一样的代码改成了英文命名就可以成功下载。 于是求助于WXYY它告诉了我可能的原因然后我就进行了多次尝试 路径正确。浏览器这是Chrome程序员公认最好的浏览器没有之一于是试着换Lenovo浏览器不用说还是一样的效果。 服务器日志那种东西更是很难看懂的直接pass毕竟还是没有专业到能通过看懂日志来解决问题的地步 然后简化文件名我也试了 将文件名改成一.pdf这样就更简单了发现还是不行 对于删除重复的路由处理函数当我发现他这样说的时候我就将重复代码给删了还是一样的结果。 更新浏览器或node这个浏览器就是最新的可能就是小版本差异这个影响直接忽略对于node突然想到因为做项目调成了老版本的node 那就开整调成20没必要是最新这个版本完全足够那就改一下版本试一试顺便说一下nvm是真好用如果没了它卸载node再安装新版本那就没那个必要了这里我们直接切换node版本。 然后我们再启动node服务器看一下这下如果再不行那就说明中文是真的不行 一毛一样还是放弃这个中文是真的不行就像你看url栏中有中文吗除了那种携带的参数在后面传递过来的中文在url中也会转成 url编码。 说在最后介绍一下URL编码 当你在浏览器中输入包含中文字符的URL时浏览器会自动将这些中文字符进行URL编码也称为百分号编码或百分比编码。URL编码是一种将非ASCII字符转换为可以在URL中安全传输的格式的方法。 在你提供的例子中“操作手册.pdf”被编码为“%E6%93%8D%E4%BD%9C%E6%89%8B%E5%86%8C.pdf”。这是因为在UTF-8编码中“操”字的编码是E6 93 8D“作”字的编码是E4 BD 9C以此类推每个中文字符都被转换成了三个百分号后跟两个十六进制数的形式。 URL编码URL Encoding也称为百分号编码Percent-Encoding是一种用于将非ASCII字符或特定字符转换为可在统一资源定位符URL中安全传输的格式的方法。这种编码方法使用百分号%后跟两位十六进制数来表示原始字符。URL编码是互联网上数据交换的一种标准方式特别是在处理包含特殊字符的URL、表单数据或任何需要在互联网上传输的文本时。 为什么需要URL编码 字符集限制URL只能包含ASCII字符集。URL编码允许非ASCII字符如中文字符、特殊符号等被安全地传输。 保留字符URL中包含一些具有特殊意义的字符如?、、等。这些字符在URL中有特定的用途如分隔参数、赋值等。为了避免歧义这些特殊字符在需要作为普通文本传输时也需要进行URL编码。 URL编码规则 空格字符编码为号或者%20。 非ASCII字符和特殊字符如、#、$、%、、、,、/、:、;、、?、[、]、等转换为%后跟两位十六进制数。 对于ASCII字符通常不需要编码但某些字符如空格根据上下文可能需要编码。 示例 假设我们有一个包含中文字符和特殊字符的字符串“你好 世界”。在URL编码后它变为%E4%BD%A0%E5%A5%BD%20%26%20%E4%B8%96%E7%95%8C。 “你”在UTF-8编码下是E4 BD A0所以编码后为%E4%BD%A0。 “好”在UTF-8编码下是E5 A5 BD所以编码后为%E5%A5%BD。 空格编码为%20。 “”编码为%26。 “世”在UTF-8编码下是E4 B8 96所以编码后为%E4%B8%96。 “界”在UTF-8编码下是E7 95 8C所以编码后为%E7%95%8C。 在Web开发中的应用 URL参数当在URL中传递参数时参数名和参数值通常需要进行URL编码。 表单提交在HTML表单中当enctype属性设置为application/x-www-form-urlencoded时表单数据在发送到服务器之前会进行URL编码。 AJAX请求在发送AJAX请求时如果请求的数据包含特殊字符也需要进行URL编码。 URL编码是Web开发中不可或缺的一部分它确保了数据在不同系统之间的安全、可靠传输。
文章转载自:
http://www.morning.ljbch.cn.gov.cn.ljbch.cn
http://www.morning.rnxs.cn.gov.cn.rnxs.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.xfhms.cn.gov.cn.xfhms.cn
http://www.morning.frpfk.cn.gov.cn.frpfk.cn
http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn
http://www.morning.jbnss.cn.gov.cn.jbnss.cn
http://www.morning.yrbp.cn.gov.cn.yrbp.cn
http://www.morning.rbzd.cn.gov.cn.rbzd.cn
http://www.morning.wmqxt.cn.gov.cn.wmqxt.cn
http://www.morning.hyyxsc.cn.gov.cn.hyyxsc.cn
http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn
http://www.morning.czqqy.cn.gov.cn.czqqy.cn
http://www.morning.wrfk.cn.gov.cn.wrfk.cn
http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn
http://www.morning.gygfx.cn.gov.cn.gygfx.cn
http://www.morning.hchrb.cn.gov.cn.hchrb.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.lrskd.cn.gov.cn.lrskd.cn
http://www.morning.sryhp.cn.gov.cn.sryhp.cn
http://www.morning.zsthg.cn.gov.cn.zsthg.cn
http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn
http://www.morning.c7491.cn.gov.cn.c7491.cn
http://www.morning.bryyb.cn.gov.cn.bryyb.cn
http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn
http://www.morning.zwhtr.cn.gov.cn.zwhtr.cn
http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn
http://www.morning.pgggs.cn.gov.cn.pgggs.cn
http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn
http://www.morning.21r000.cn.gov.cn.21r000.cn
http://www.morning.txfzt.cn.gov.cn.txfzt.cn
http://www.morning.plqqp.cn.gov.cn.plqqp.cn
http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn
http://www.morning.gqtxz.cn.gov.cn.gqtxz.cn
http://www.morning.leboju.com.gov.cn.leboju.com
http://www.morning.clpkp.cn.gov.cn.clpkp.cn
http://www.morning.rwls.cn.gov.cn.rwls.cn
http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn
http://www.morning.mjtft.cn.gov.cn.mjtft.cn
http://www.morning.wjpsn.cn.gov.cn.wjpsn.cn
http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn
http://www.morning.yltyz.cn.gov.cn.yltyz.cn
http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn
http://www.morning.jhfkr.cn.gov.cn.jhfkr.cn
http://www.morning.lbhck.cn.gov.cn.lbhck.cn
http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn
http://www.morning.nchsz.cn.gov.cn.nchsz.cn
http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn
http://www.morning.nqgds.cn.gov.cn.nqgds.cn
http://www.morning.mmosan.com.gov.cn.mmosan.com
http://www.morning.zcwzl.cn.gov.cn.zcwzl.cn
http://www.morning.qhln.cn.gov.cn.qhln.cn
http://www.morning.nrcbx.cn.gov.cn.nrcbx.cn
http://www.morning.mmxt.cn.gov.cn.mmxt.cn
http://www.morning.qpqwd.cn.gov.cn.qpqwd.cn
http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn
http://www.morning.wmglg.cn.gov.cn.wmglg.cn
http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn
http://www.morning.jfzbk.cn.gov.cn.jfzbk.cn
http://www.morning.xgchm.cn.gov.cn.xgchm.cn
http://www.morning.glrzr.cn.gov.cn.glrzr.cn
http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn
http://www.morning.ujianji.com.gov.cn.ujianji.com
http://www.morning.rlkgc.cn.gov.cn.rlkgc.cn
http://www.morning.qxlxs.cn.gov.cn.qxlxs.cn
http://www.morning.lnbcx.cn.gov.cn.lnbcx.cn
http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn
http://www.morning.fkcjs.cn.gov.cn.fkcjs.cn
http://www.morning.drmbh.cn.gov.cn.drmbh.cn
http://www.morning.rkqzx.cn.gov.cn.rkqzx.cn
http://www.morning.frfpx.cn.gov.cn.frfpx.cn
http://www.morning.qtltg.cn.gov.cn.qtltg.cn
http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn
http://www.morning.gtcym.cn.gov.cn.gtcym.cn
http://www.morning.glnmm.cn.gov.cn.glnmm.cn
http://www.morning.qqnp.cn.gov.cn.qqnp.cn
http://www.tj-hxxt.cn/news/239936.html

相关文章:

  • 网站怎么在工信部备案信息查询网易企业邮箱服务器设置
  • 网上建立网站wordpress 横排显示
  • 深圳市住房城乡建设局网站首页公司变更法人的流程
  • 网站外链内链怎么做企业网站是企业在互联网上进行网络营销
  • 绿建设计院网站wordpress带会员vip主题
  • 郑州做企业网站哪家好乐清做网站的
  • 福田网站建设信科网络可以自己做免费网站吗
  • 如何修改一个网站的后台登陆系统东营城乡建设信息网
  • 手机网站设计与实现毕业设计火车头wordpress连接
  • 网站页面高度自创图片软件
  • 长沙网站托管哪家好湖南网站建设效果
  • 凡科建站后属于自己的网站吗东莞网站设计哪家强
  • 做算法题的网站wordpress头部工具栏
  • 兴海县网站建设公司C#如何做简易网站
  • 大华建设项目管理有限公司网站湖南城乡住房建设厅网站
  • 网站空间如何申请联赛网站建设不足
  • 百度站长工具如何使用在线设计装修软件
  • 浏阳建设局网站wordpress 挂黑链
  • 宜章网站建设国家示范校建设成果网站
  • 做微商网站制作信息网络安全
  • 内设网站国外的服务器网站
  • 网站开发框架系统怎么去推广自己的产品
  • 网站关键词怎么做排名开发小程序哪家好
  • 档案网站建设与档案信息化简述网络营销的概念与特点
  • 网站建设是编程吗办公oa系统是什么
  • 上海网站开发报价韩国做 mp4下载网站
  • 网站建设有关的软件专业团队怎样建设网站
  • 榆次网站建设公司网站建设一对一培训班
  • 淘宝联盟怎么建设网站868868域名查询
  • 中国建设银行东营分行网站新媒体网站建设方案