最近遇到nodeJS的图片上传需要,本想图方便直接百度(google都不屑于用),很快就能搞定,开始也一帆风顺,布置好前后端代码之后的确实现了图片上传。
然而当我手贱将一个.exe文件也上传的时候,发现服务器也照样接受,没有任何过滤措施,这还了得!强迫症发作之后我决定自己加入后缀名过滤代码,除了图片类型文件其余一概不予存储。下文记录我的解决方式,完成nodeJS只接受图片的文件上传。
首先前端通过表单接受本地文件,然后通过onchange监听,调用uploadByForm方法ajax提交文件到服务端,都是老套路:
<form role="form" id="myForm" action="http://v0.api.upyun.com/xxx" method="post" enctype="multipart/form-data">
<input type="hidden" name="policy" value="">
<input type="hidden" name="signature" value="">
<div class="form-group">
<label class="col-sm-2 control-label">说明:</label>
<div class="col-sm-10">
<p class="form-control-static ">ajax 文件上传 。</p>
</div>
</div>
<div class="form-group">
<label for="url" class="col-sm-2 control-label"><s>*</s>图片选择:</label>
<div class="col-sm-7">
<input type="file" name="fulAvatar" id="file_upload" value=""
class="form-control" placeholder="图片地址" οnchange="uploadByForm();">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-7">