HTML5的 input:file上傳 樣式美化及表單異步提交

樣式美化
請看博客: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
}
View Code

 

上傳類型控制 參考地址http://www.haorooms.com/post/input_file_leixingapp

關鍵點是異步提交,就是先選擇文件,但不上傳,待點擊提交按鈕後上傳服務端返回上傳是否成功信息異步

思路:利用FormData對象,你能夠使用一系列的鍵值對來模擬一個完整的表單,而後使用XMLHttpRequest發送這個"表單".ide

建立一個FormData對象 

你能夠先建立一個空的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
                          });
                        }
              }
            });  
View Code

 

效果this

個人ajax 是 reqwest,其中有  url

processData: false, //不要去處理髮送的數據contentType: false //不要去設置Content-Type請求頭

相關文章
相關標籤/搜索