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


樣式美化
請看博客:css input[type=file] 樣式美化,input上傳按鈕美化 

input file上傳按鈕的美化思路是,先把之前的按鈕透明度opacity設置為0,然后,外層用div包裹,就實現了美化功能。 

DOM結構:

<a href="javascript:;" class="a-upload">
    <input type="file" name="" id="">點擊這里上傳文件
</a>

css樣式

/*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_leixing

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

思路:利用FormData對象,你可以使用一系列的鍵值對來模擬一個完整的表單,然后使用XMLHttpRequest發送這個"表單".

創建一個FormData對象 

你可以先創建一個空的FormData對象,然后使用append()方法向該對象里添加字段,如下:

 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

 

效果

我的ajax 是 reqwest,其中有  

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM