前端探索 | 文件创建、复制与删除【Git】

前端探索 | 文件创建、复制与删除【Git】,第1张

touch file 指令可创建文件

echo content >file 可将内容添加到文件中

echo new content >file 若再次输入新的内容将覆盖原内容

echo new content >>file 可将新内容增加到文件中

echo -e 指令可以激活转义字符

touch 1txt 2.txt 可以同时创建两个文件

mkdir a 将会创建名为a的目录

mkdir -p 递归创建目录,即使上级目录不存在,也会按目录层级自动创建目唤闹败录

cp 指令可以对弯耐文件进行复制

cp -r 指令可以进行目录的复制,参数 -r 递归持续复制,用于目录的复制行为

注: -R 只复制目录下的文件,不复制目录下的文件夹

rm(remove),以上指令分别用和颤于删除文件与目录

mv file file2 实现上述 *** 作

touch 实现

第一种:经典的form和input上传

设置form的aciton为后端页面,enctype="multipart/form-data",type=‘post’

<form action='http://www.ty2y.com/' enctype="multipart/form-data" type='post'><input type='file'><input type='hidden' name='userid'><input type='hidden' name='signature'><button>提交</button></form>

使用input选择文件,设置好其他input的值,点击提交,将文件数据及签名等认证信息发送到form设置的action对应的页面,浏览器也会跳转到该页面。触发form表单提交数据的方式有2种,一种是在页面上点击button按钮或<input

type='submit'>按钮触发,第二种是在js中执行form.submit()方法。

优点:使用简单方便,兼容性好,基本所有浏览器都支持。

缺点:1. 提交数据后页面会跳转(下面会讲如何禁止页面跳转)。

2.因为是浏览器发起的请求,不是一个ajax,所以前端无法知肆尺道什么时候上传结束。

3. form表单里发送除文件外的数据,一般是新建一个type=hidden的input,value=‘需要传的数据’,每发送一个数据就需要一个input,一旦多了就会使得dom看起来比较冗余。

小技巧:

form表单提交数据后会自动跳转到action指定的页面,为了禁止页面跳转,可以在页面中新建一个空的ifame,比如name='upload',然后设置form的target="Uploader",form有一个target的属性,规定在何处打开action,这样form提交数据后就会仍停留在当前页。代码如下:

<form action='http://www.jshaman.com/' enctype="multipart/form-data" type='post'  target="uploader1"><input type='file'><button>提交</button></form><ifrmae name='upload' id='uploader1'></iframe>

这样写的另一个好处是,可以知道什么时候上传完成并接收到后端的回调结果。比如上面这个例子,文件数据发送到了

'uploadFile.php',假设该页面处理完数据后返回了一个地址,该地址会被写入到之前谨兄的iframe中。所以在ifame的onload函数触发时,也就是上传完成后,可以在iframe中读取到后端返回的数据。

var  iframe = document.getElementById('upload1')

iframe.onload = function () {  

                    var doc = window.frames['uploader1'].document                    var pre = doc.getElementsByTagName('pre')      祥雹袭              var obj = JSON.parse(pre[0].innerHTML)

                }

使用这种方法时需要注意,iframe有跨域限制,创建出来的iframe的地址如果和当前页面地址不同源,会报错。这种情况下,建议大家在iframe的onload函数中,再次向后端请求一个接口获取文件地址,而不是直接去iframe里读取。或者返回这样的数据。

<script type="text/javascript">window.top.window[callback](data)</script>

callback是和前端约定好的名字,上传完成后触发该函数并返回后端数据。

第二种:使用formData上传。

用js构造form表单的数据,简单高效,但最低只兼容IE10,所以需要兼容IE9的童鞋们就略过这个方法吧。

html:

<input type='file'>

js:

var formData = new FormData()

formData.append("userid", userid)

formData.append("signature", signature)

formData.append("file", file) //file是blob数据//再用ajax发送formData到服务器即可,

注意一定要是post方式上传

说明:第一种方法提到了创建多个type=‘hidden’的input来发送签名数据,这儿可以用formData.append方法来代替该 *** 作,避免了dom中有多个input的情况出现。最后将file数据也append到formData发送到服务器即可完成上传。

优点:由于这种方式是ajax上传,可以准确知道什么时候上传完成,也可以方便地接收到回调数据。

缺点:兼容性差

第三种:使用fileReader读取文件数据进行上传。

HTML5的新api,兼容性也不是特别好,只兼容到了IE10。

var fr = new FileReader()

                fr.readAsDataURL(file)

                fr.onload = function (event) {                    var data= event.target.result //此处获得的data是base64格式的数据                    img.src = data

                    ajax(url,{data} ,function(){})

                }

上面获得的data可以用来实现图片上传前的本地预览,也可以用来发送base64数据给后端然后返回该数据块对应的地址。

优点: 同第二种

缺点:一次性发送大量的base64数据会导致浏览器卡顿,服务器端接收这样的数据可能也会出现问题。

文件上传页面的前端可以选择使用一些比较好用的上传组件辩腔逗,例如百度的开源组件WebUploader,泽优软件的up6,这些组件基本能满足文件上传的一些日常所需功能,如异步上传文件,文件夹,拖拽式上传,黏贴上传,圆高上传进度监控,文件携卖缩略图,甚至是大文件断点续传,大文件秒传。

需求:

支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验;

内网百兆网络上传速度为12MB/S

服务器内存占用低

支持文件夹上传,文件夹中的文件数量达到1万个以上,且包含层级结构。

支持PC端全平台 *** 作系统,Windows,Linux,Mac

支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。

支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12174244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存