跳到主要內容

[JS/JQuery] 多檔上傳 ( drap and drop )

[html]

<div id="('divImg' +did)" title="上傳圖片" class="UploadImg" ondrop="ImgDrop(event,'did">

/*** drap and drop****/
      <input id="('Img' +did)" name="Img" type="file" title="('file' +did)" >

<label for="('Img' +did)">點我上傳<em>或拖拉圖片檔案至此</em></span></label>

<a class="BtnDel" title="刪除" onclick="DelPic('did');"></i>刪除</a>

<img id="('imgPreview' +did)" style="display: none;" src="" alt="@item.Title">
/***end drap and drop****/

</div>
<div id="('errFile' +did)" class="MsgError" tabindex="0"><span><i class="icon-error"></i></span></div>
               

[js]

var filelist = [];

//點擊上傳
$("input[id^=Img][type='file']").change(function () {
    if (this.files && this.files[0]) {
        FilePrepareUpload(this.files[0], this.files, this.id.replace("Img", ""));
    }
});

//拖拉上傳 drap and drop
function ImgDrop(e, did) {
    if (e.dataTransfer) {
        if (e.dataTransfer.files.length) {
            e.preventDefault();
            e.stopPropagation();
            FilePrepareUpload(e.dataTransfer.files[0], e.dataTransfer.files, did);
        }
    }
}

//刪除檔案
function DelPic(did) {
    $('.PopupDeletePic').addClass("Show");
    $(".PopupDeletePic .BtnDark").attr("onclick", "delImage(" + did + ");");
}

function delImage(did) {
    $('#imgPreview' + did).attr("src", "");
    $('#imgPreview' + did).attr("title", "");
    $("#imgPreview" + did).css("display", "none");
    $("#divImg" + did + " .BtnDel").removeClass("Show");
    $("#divImg" + did + " .ProgressBar").removeClass("Show");
 
    $.each(filelist, function (i, item) {
        if (item.i == did) {          
            filelist.splice(i,1);
            return false;
        }       
    });

    $("#Img" + did).val('');
}

//上傳檔案
function FilePrepareUpload(originalFiles, dataFile, fid) {
    var uploadErrors = [];
    var acceptFileTypes = /(\.|\/)(jpe?g|gif|png)$/i;
    if (originalFiles['type'].length && !acceptFileTypes.test(originalFiles['type'])) {
        uploadErrors.push("檔案格式錯誤,請上傳 .jpg/.jpeg/.gif/.png!");
    }
    if (originalFiles['size'] > 1048576) {
        uploadErrors.push("檔案太大!");
    }

    if (uploadErrors.length > 0) {

        $("#errFile" + fid + " span").addClass("Show");
        $("#errFile" + fid + " span").html("<i class='icon-error'></i>" + uploadErrors.join("\n"));

        $('#imgPreview' + fid ).attr("src", "");
        $("#imgPreview" + fid ).css("display", "none");
        $("#divImg" + fid + " .BtnDel").removeClass("Show");
        $("#divImg" + fid + " .ProgressBar").removeClass("Show");
    } else {
        $("#errFile" + product + " span").removeClass("Show");

        if (dataFile && dataFile[0]) {
            $("#divImg" + fid + " .ProgressBar").addClass("Show");
            $("#divImg" + fid + " .Progress").css("width", '0%');
            var updateProgress = 'updateProgress' + product;
            var reader = new FileReader();

            filelist.push({ i: product, f: dataFile });
           
            reader.onload = function (e) {
                $("#imgPreview" + fid ).attr("src", e.target.result);
                $("#imgPreview" + fid ).css("display", "");
                $("#divImg" + fid  + " .Progress").css("width", '100%');
                $("#imgPreview" + fid ).attr("title", dataFile[0].name);
            }
            reader.readAsDataURL(dataFile[0]);
            $("#divImg" + fid + " .ProgressBar").removeClass("Show");
            $("#divImg" + fid + " .BtnDel").addClass("Show");
        }
    }
}


留言

這個網誌中的熱門文章

[python] python 時區轉換 ( timezone )

python 時區轉換 import datetime as dt import pytz d = dt.datetime(2019,1,1,14,0,0) #create Taipei timezone tw = pytz.timezone('Asia/Taipei') #set d timezone is 'Asia/Taipei' twdt = tw.localize(d) #change to utc time utc_dt = twdt.astimezone(pytz.utc) *注意 網路上很多使用 d.replace(tzinfo=tw)   但是可能會出現時差問題, 如下: datetime.time(23, 18, 5, tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>) 參考文件 python时区设置——pytz模块

[HTML] 文字浮水印效果 text watermark css

[.css] .info-mask {     height: 0;       position: absolute;       margin-top:120px;   } .info-opacity {     opacity: 0.8;     color: black; } .info-text {     color: gray;     font-size: 40px;     -webkit-transform: rotate(-5deg);       line-height: 60px;     max-width:1200px;     letter-spacing:3px;     padding-left:0.8em; } [.html]     <div class="info-mask">         <p class="info-text">             WaterMarkText         </p>     </div>    <table class="table table-bordered table-striped table-responsive table-hover" style="position:                 relative;" >        <tbody class="info-opacity" >        </tbody>    </table>

[GCP] Google Cloud Platform 搬移 VM & cloud sql & datastore

建立同VM 同專案 VM  建立快照 --> 用快照建立新的VM 跨專案 VM  建立快照  --> 用快照建立映像檔 --> 用印象檔建立新的VM Notice  開機磁碟: 自訂映像檔->選擇印象檔 搬移cloud sql step 1. A SQL [Top option] '匯出' setting Bucket and formate is 'SQL' step 2. B SQL [Top option] '匯入' setting Bucket and formate is 'SQL' Bucket path: gs://{Bucket}/file.sql Notice   不同專案的gs要有權限讀取 搬移 datastore 詳細請參考: https://cloud.google.com/datastore/docs/export-import-entities   step 1. 'new' project [menu] 資料儲存庫 -> 啟用datastore step 2. gcloud terminal gcloud auth login  gcloud config set project <projectid> gcloud beta datastore export --kinds=" <KIND> " gs:// <BUCKET> gcloud config set project new-projectid gcloud datastore export gs:// <BUCKET> Notice  跨專案gs storage auth 需要新增  xxx@appspot.gserviceaccount.com  [storage BUCKET 讀取者] 權限