樣式美化
請看博客:css input[type=file] 樣式美化,input上傳按鈕美化 javascript
input file上傳按鈕的美化思路是,先把以前的按鈕透明度opacity設置爲0,而後,外層用div包裹,就實現了美化功能。 css
DOM結構:java
<a href="javascript:;" class="a-upload"> <input type="file" name="" id="">點擊這裏上傳文件 </a>
css樣式ajax
/*a upload */ .a-upload { padding: 4px 10px; height: 20px; line-height: 20px; position: relative; cursor: pointer; color: #888; background: #fafafa; border: 1px solid #ddd; border-radius: 4px; overflow: hidden; display: inline-block; *display: inline; *zoom: 1 } .a-upload input { position: absolute; font-size: 100px; right: 0; top: 0; opacity: 0; filter: alpha(opacity=0); cursor: pointer } .a-upload:hover { color: #444; background: #eee; border-color: #ccc; text-decoration: none }
上傳類型控制 參考地址http://www.haorooms.com/post/input_file_leixingapp
關鍵點是異步提交,就是先選擇文件,但不上傳,待點擊提交按鈕後上傳服務端返回上傳是否成功信息異步
思路:利用FormData
對象,你能夠使用一系列的鍵值對來模擬一個完整的表單,而後使用XMLHttpRequest
發送這個"表單".ide
你能夠先建立一個空的FormData
對象,而後使用append()
方法向該對象裏添加字段,以下:post
var oFiles = document.querySelector("#fileId"); var formData = new FormData(); formData.append("newFileName", this.state.formData["newFileName"]); formData.append("url", this.state.formData["url"]); formData.append("picture", oFiles.files[0]); reqwest({ url : '/modules/cms/manager/action/ImageControlAction/uploadImageControl.htm', method: 'post', contentType:false, processData:false, data:formData, success: (result) => { if(result.code==200) { Modal.success({ title: result.msg }); Actions.initStore(); this.props.hideAddModal(); }else{ Modal.error({ title: result.msg }); me.setState({ loading:false }); } } });
效果this
個人ajax 是 reqwest,其中有 url
processData: false, //不要去處理髮送的數據contentType: false //不要去設置Content-Type請求頭