علیرضا احمدی بابلانی : وب مهراز - جامعه برنامه نویسی ایران

چطور ممکن است فایلی را بصورت آسنکرون با استفاده از jQuery آپلود کرد ؟

html:
<span>File</span>
<input type="file" id="file" name="file" size="10"/>
<input id="uploadbutton" type="button" value="Upload"/>
و کدی که در جاوااسکریپت زدم
javascript:
$(document).ready(function () {
    $("#uploadbutton").click(function () {
        var filename = $("#file").val();
        $.ajax({
            type: "POST",
            url: "addFile.do",
            enctype: 'multipart/form-data',
            data: {
                file: filename
            },
            success: function () {
                alert("Data Uploaded: ");
            }
        });
    });
});
با استفاده از  کد بالا  من فقط می تونم نام فایل که میخواهد آپلود شود را میگیرم  ، چه کاری باید انجام دهم ؟

پاســخ ها

7a1ba23bee0c433abe47664d2a9fa3c3
ایمان نکونام : در html5 می توان با استفاده از jQuery و  Ajax برای آپلود فایل استفاده کرد .
میتوان برخی اعتبار سنجی ها  را روی فایل انجام داد ، حجم فایل ، نوع فایل و نام فایل را  بررسی کرد .
با استفاده از تگ <progress> رویداد process را هندل کرد.
 
برای شروع کار در html کدهای زیر را قرار میدهیم :
html:
<form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
<progress></progress>
حالا برای برخی اعتبار سنجی ها در رویداد change فایل کد های زیر را قرار میدهیم :

jQuery:
$(':file').change(function(){
    var file = this.files[0];
    var name = file.name;
    var size = file.size;
    var type = file.type;
    // اعتبار سنجی های شما
});
حالا با Ajax رویداد کلیک آپلود فایل را ارسال می کنیم :

Ajax:
$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'upload.php',  //اسکریپن سمت سرور برای پردازش داده ها
        type: 'POST',
        xhr: function() {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // Check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
});
حالا باید به کاربر پردازش را نشان دهیم تا بداند که  فایل در حال آپلود شدن است:

jQuery:
function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total
}); }


دیدید که این کار در html5 چقدر راحت انجام میشه .
شنبه 16 اسفند 1393 ساعت : 13 : 0
تعداد بازدید : 836
ارسال به دوستان

ارسال