Dosyalar─▒ e┼čzamans─▒z olarak nas─▒l y├╝kleyebilirim?


Al─▒nan cevaba git


JQuery ile e┼čzamans─▒z bir dosya y├╝klemek istiyorum. Bu benim HTMLÔÇÖm:

 <span>File</span>
<input type="file" id="file" name="file" size="10"/>
<input id="uploadbutton" type="button" value="Upload"/>
 

Ve i┼čte benim jQuery kodum:

 $(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: ");
            }
        });
    });
});
 

Y├╝klenmekte olan dosya yerine sadece dosya ad─▒n─▒ al─▒yorum. Bu sorunu ├ž├Âzmek i├žin ne yapabilirim?


2825









Cevap say─▒s─▒n─▒ say: 30






─░le HTML5 E─čer Ajax ve jQuery ile dosya y├╝klemeleri yapabilirsiniz. Yaln─▒zca bu ┼čekilde de─čil, dosya do─črulamalar─▒ yapabilir (ad, boyut ve MIME t├╝r├╝) veya progress olay─▒n─▒ HTML5 progress etiketiyle (veya bir div) i┼čleyebilirsiniz. Son zamanlarda bir dosya y├╝kleyici yapmak zorunda kald─▒m, ancak Flash veya Iframes veya eklentileri kullanmak istemedim ve bir ara┼čt─▒rmadan sonra ├ž├Âz├╝mle kar┼č─▒la┼čt─▒m.

HTML:

 <form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
<progress></progress>
 

─░lk olarak, isterseniz biraz do─črulama yapabilirsiniz. ├ľrne─čin .on('change') , dosya durumunda:

 $(':file').on('change', function () {
  var file = this.files[0];

  if (file.size > 1024) {
    alert('max upload size is 1k');
  }

  // Also see .name, .type
});
 

┼×imdi $.ajax() d├╝─čmenin t─▒klamas─▒yla g├Ânderin:

 $(':button').on('click', function () {
  $.ajax({
    // Your server script to process the upload
    url: 'upload.php',
    type: 'POST',

    // Form data
    data: new FormData($('form')[0]),

    // Tell jQuery not to process data or worry about content-type
    // You *must* include these options!
    cache: false,
    contentType: false,
    processData: false,

    // Custom XMLHttpRequest
    xhr: function () {
      var myXhr = $.ajaxSettings.xhr();
      if (myXhr.upload) {
        // For handling the progress of the upload
        myXhr.upload.addEventListener('progress', function (e) {
          if (e.lengthComputable) {
            $('progress').attr({
              value: e.loaded,
              max: e.total,
            });
          }
        }, false);
      }
      return myXhr;
    }
  });
});
 

G├Ârd├╝─č├╝n├╝z gibi, HTML5 (ve baz─▒ ara┼čt─▒rmalar) ile dosya y├╝kleme yaln─▒zca m├╝mk├╝n de─čil, s├╝per kolay olur. ├ľrneklerin HTML5 bile┼čenlerinden baz─▒lar─▒ her taray─▒c─▒da bulunmad─▒─č─▒ndan Google Chrome ile deneyin .


2475







2019 G├╝ncelleme: O hala taray─▒c─▒larda ba─čl─▒d─▒r sizin demografik kullan─▒mlar─▒.

"Yeni" HTML5 file API's─▒yla anla┼č─▒lmas─▒ gereken ├Ânemli bir ┼čey, IE 10'a kadar desteklenmedi─čidir . Hedefledi─činiz pazar, eski Windows s├╝r├╝mlerine g├Âre ortalaman─▒n ├╝zerinde bir e─čilime sahipse, bu ├╝r├╝ne eri┼čemeyebilirsiniz.

2017'den itibaren, taray─▒c─▒lar─▒n yakla┼č─▒k% 5'i IE 6, 7, 8 veya 9'dan biridir. B├╝y├╝k bir ┼čirkete (├Ârne─čin, bu bir B2B arac─▒d─▒r ya da e─čitim i├žin sundu─čunuz bir ┼čey) y├Âneliyorsan─▒z bu rakam f─▒rlayabilir. . 2016 y─▒l─▒nda, IE8 kullanan makinelerinin% 60'─▒ndan fazlas─▒n─▒ kullanan bir ┼čirketle i┼č yapt─▒m.

Bu d├╝zenleme itibariyle 2019, ilk cevab─▒mdan neredeyse 11 y─▒l sonra. IE9 ve d├╝┼č├╝k global % 1 i┼čareti etraf─▒nda ancak daha y├╝ksek kullan─▒m k├╝meleri hala vard─▒r.

Bundan ald─▒─č─▒n─▒z en ├Ânemli ┼čey - ├Âzellik ne olursa olsun - kullan─▒c─▒lar─▒n─▒z─▒n hangi taray─▒c─▒y─▒ kulland─▒─č─▒n─▒ kontrol etmektir . Bunu yapmazsan─▒z, ÔÇťbenim i├žin i┼če yararÔÇŁ ─▒n neden bir m├╝┼čteriye verilecek kadar iyi olmad─▒─č─▒ konusunda h─▒zl─▒ ve ac─▒ verici bir ders ├Â─čreneceksiniz. caniuse faydal─▒ bir ara├žt─▒r ancak demografik bilgilerini nereden ald─▒klar─▒n─▒ not edin. Sizinki ile ayn─▒ hizada olmayabilir. Bu asla kurumsal ortamlardan daha ger├žek├ži de─čildir.

2008'den gelen cevab─▒m bunu izler.


Bununla birlikte, JS dosyalar─▒n─▒n uygun olmayan dosya y├╝kleme y├Ântemleri vard─▒r. Sayfada (CSS ile gizledi─činiz) bir iframe olu┼čturabilir ve ard─▒ndan formunuzu bu iframe'e g├Ândermeyi hedefleyebilirsiniz. Ana sayfan─▒n ta┼č─▒nmas─▒ gerekmez.

Bu "ger├žek" bir yaz─▒d─▒r, yani tamamen etkile┼čimli de─čildir. Durumuna ihtiyac─▒n─▒z varsa, bunu i┼člemek i├žin sunucu taraf─▒nda bir ┼čey gerekir. Bu, sunucunuza ba─čl─▒ olarak b├╝y├╝k ├Âl├ž├╝de de─či┼čir. ASP.NET daha ho┼č mekanizmalara sahiptir. PHP d├╝z ba┼čar─▒s─▒z, ancak etraf─▒nda almak i├žin Perl veya Apache de─či┼čikliklerini kullanabilirsiniz.

Birden fazla dosya y├╝klemeye ihtiyac─▒n─▒z varsa, her dosyay─▒ birer birer yapmak (en fazla dosya y├╝kleme s─▒n─▒r─▒n─▒ a┼čmak i├žin) en iyisidir. ─░lk formu iframe'e g├Ânderin, yukar─▒dakileri kullanarak ilerlemesini izleyin ve bitti─činde, ikinci formu iframe'e g├Ânderin, vb.

Veya bir Java / Flash ├ž├Âz├╝m├╝ kullan─▒n. Mesajlar─▒yla yapabilecekleri konusunda ├žok daha esnekler.


264


2008-10-03





Bu ama├žla Fine Uploader eklentisini kullanman─▒z─▒ ├Âneririm . Ki┼čisel JavaScript kod ┼č├Âyle olacakt─▒r:

 $(document).ready(function() {
  $("#uploadbutton").jsupload({
    action: "addFile.do",
    onComplete: function(response){
      alert( "server response: " + response);
    }
  });
});
 

110


2008-11-21





Not: Bu cevap eski, art─▒k XHR kullanarak dosya y├╝klemek m├╝mk├╝n.


XMLHttpRequest (Ajax) kullanarak dosya y├╝kleyemezsiniz . Bir iframe veya Flash kullanarak efekti sim├╝le edebilirsiniz. Etkiyi elde etmek i├žin dosyalar─▒n─▒z─▒ bir iframe ├╝zerinden g├Ânderen m├╝kemmel jQuery Form Plugin .


99







Gelecekteki okuyucular i├žin sarar.

E┼čzamans─▒z Dosya Y├╝kleme

HTML5 ile

FormData ve Dosya API'si destekleniyorsa (her iki HTML5 ├Âzelli─či) y├Ântemi kullanarak dosyalar─▒ jQuery ile y├╝kleyebilirsiniz . $.ajax() https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objectshttps://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

Dosyalar─▒ FormData olmadan da g├Ânderebilirsiniz, ancak her iki durumda da Dosya API'sinin, dosyalar─▒ XMLHttpRequest (Ajax) ile g├Ânderilebilecek ┼čekilde i┼člemesi i├žin bulunmas─▒ gerekir .

 $.ajax({
  url: 'file/destination.html', 
  type: 'POST',
  data: new FormData($('#formWithFiles')[0]), // The form with the file inputs.
  processData: false,
  contentType: false                    // Using FormData, no need to process data.
}).done(function(){
  console.log("Success: Files sent!");
}).fail(function(){
  console.log("An error occurred, the files couldn't be sent!");
});
 

H─▒zl─▒, saf JavaScript ( jQuery yok ) ├Ârne─či i├žin bkz. " Bir FormData nesnesi kullanarak dosya g├Ânderme ".

Geri ├žekil

HTML5 desteklenmedi─činde ( Dosya API's─▒ yoksa ) yaln─▒zca di─čer saf JavaScript ├ž├Âz├╝m├╝ ( Flash veya ba┼čka bir taray─▒c─▒ eklentisi yok), XMLHttpRequest nesnesini kullanmadan zaman uyumsuz bir istek taklit etmeyi sa─člayan gizli iframe tekni─čidir .

Dosya girdileriyle birlikte formun hedefi olarak iframe ayar─▒ndan olu┼čur. Kullan─▒c─▒ bir istek g├Ânderdi─činde ve dosyalar y├╝klendi─činde ancak cevap ana sayfay─▒ yeniden olu┼čturmak yerine iframe i├žinde g├Âr├╝nt├╝lenir. ─░frame'nin gizlenmesi t├╝m i┼člemi kullan─▒c─▒ya kar┼č─▒ ┼čeffaf hale getirir ve zaman uyumsuz bir iste─či taklit eder.

D├╝zg├╝n yap─▒l─▒rsa hemen hemen herhangi bir taray─▒c─▒da ├žal─▒┼čmas─▒ gerekir, ancak iframe'den nas─▒l yan─▒t al─▒naca─č─▒ konusunda baz─▒ uyar─▒lar vard─▒r.

Bu durumda b├Âyle bir sar─▒c─▒ eklentisi kullanmay─▒ tercih edebilir Bifrost kullan─▒r iframe tekni─čini ayn─▒ zamanda sa─člar jQuery Ajax ta┼č─▒ma i├žin izin dosya g├Ândermek sadece birlikte $.ajax() b├Âyle y├Ântemle:

 $.ajax({
  url: 'file/destination.html', 
  type: 'POST',
  // Set the transport to use (iframe means to use Bifr├Âst)
  // and the expected data type (json in this case).
  dataType: 'iframe json',                                
  fileInputs: $('input[type="file"]'),  // The file inputs containing the files to send.
  data: { msg: 'Some extra data you might need.'}
}).done(function(){
  console.log("Success: Files sent!");
}).fail(function(){
  console.log("An error occurred, the files couldn't be sent!");
});
 

eklentiler

Bifr├Âst , jQuery'nin ajax y├Ântemine geri d├Ân├╝┼č deste─či ekleyen sadece k├╝├ž├╝k bir paketleyicidir, ancak jQuery Form Plugin veya jQuery File Upload gibi yukar─▒da belirtilen eklentilerin ├žo─ču , i┼člemi kolayla┼čt─▒rmak i├žin HTML5'ten farkl─▒ geri d├Ân├╝┼člere kadar t├╝m y─▒─č─▒nlar─▒ ve baz─▒ yararl─▒ ├Âzellikleri i├žerir. ─░htiya├žlar─▒n─▒za ve gereksinimlerinize ba─čl─▒ olarak, ├ž─▒plak bir uygulama veya bu eklentilerden birini d├╝┼č├╝nebilirsiniz.


91


2014-08-25





Bu AJAX dosya y├╝kleme jQuery eklentisi dosyay─▒ bir yere y├╝kler ve yan─▒t─▒ geri aramaya g├Ânderir, ba┼čka bir ┼čey yapmaz.

  • Belirli bir HTML'ye ba─čl─▒ de─čildir, sadece bir <input type="file">
  • Sunucunuzun herhangi bir ┼čekilde yan─▒t vermesini gerektirmez
  • Ka├ž dosya kulland─▒─č─▒n─▒z veya sayfada nerede olduklar─▒ ├Ânemli de─čildir.

- En az kullan -

 $('#one-specific-file').ajaxfileupload({
  'action': '/upload.php'
});
 

- ya da -

 $('input[type="file"]').ajaxfileupload({
  'action': '/upload.php',
  'params': {
    'extra': 'info'
  },
  'onComplete': function(response) {
    console.log('custom handler for file:');
    alert(JSON.stringify(response));
  },
  'onStart': function() {
    if(weWantedTo) return false; // cancels upload
  },
  'onCancel': function() {
    console.log('no file selected');
  }
});
 

84







─░yi ├žal─▒┼čan g├Âr├╝nt├╝leri y├╝klemek i├žin a┼ča─č─▒daki beti─či kullan─▒yorum.

HTML

 <input id="file" type="file" name="file"/>
<div id="response"></div>
 

JavaScript

 jQuery('document').ready(function(){
    var input = document.getElementById("file");
    var formdata = false;
    if (window.FormData) {
        formdata = new FormData();
    }
    input.addEventListener("change", function (evt) {
        var i = 0, len = this.files.length, img, reader, file;

        for ( ; i < len; i++ ) {
            file = this.files[i];

            if (!!file.type.match(/image.*/)) {
                if ( window.FileReader ) {
                    reader = new FileReader();
                    reader.onloadend = function (e) {
                        //showUploadedItem(e.target.result, file.fileName);
                    };
                    reader.readAsDataURL(file);
                }

                if (formdata) {
                    formdata.append("image", file);
                    formdata.append("extra",'extra-data');
                }

                if (formdata) {
                    jQuery('div#response').html('<br /><img src="ajax-loader.gif"/>');

                    jQuery.ajax({
                        url: "upload.php",
                        type: "POST",
                        data: formdata,
                        processData: false,
                        contentType: false,
                        success: function (res) {
                         jQuery('div#response').html("Successfully uploaded");
                        }
                    });
                }
            }
            else
            {
                alert('Not a vaild image!');
            }
        }

    }, false);
});
 

a├ž─▒klama

div Y├╝kleme animasyonunu g├Âstermek i├žin yan─▒t kullan─▒yorum ve y├╝kleme bittikten sonra gelen cevap.

En iyi b├Âl├╝m, bu beti─či kullan─▒rken dosya ile birlikte kimlikleri ve vb. Gibi ekstra veri g├Ânderebilirsiniz. extra-data Senaryoda oldu─ču gibi bahsetmi┼čtim .

PHP d├╝zeyinde bu normal dosya y├╝kleme olarak ├žal─▒┼čacakt─▒r. Ekstra veri veri olarak al─▒nabilir $_POST .

Burada bir eklenti ve ba┼čka ┼čeyler kullanm─▒yorsunuz. Kodu istedi─činiz gibi de─či┼čtirebilirsiniz. Burada k├Âr├╝ k├Âr├╝ne kod yazm─▒yorsun. Bu, herhangi bir jQuery dosya y├╝klemesinin temel i┼člevselli─čidir. Asl─▒nda Javascript.


60







Vanilya JavaScriptinde olduk├ža kolay bir ┼čekilde yapabilirsiniz. ─░┼čte ┼ču anki projemin bir pasaj─▒:

 var xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(e) {
    var percent = (e.position/ e.totalSize);
    // Render a pretty progress bar
};
xhr.onreadystatechange = function(e) {
    if(this.readyState === 4) {
        // Handle file upload complete
    }
};
xhr.open('POST', '/upload', true);
xhr.setRequestHeader('X-FileName',file.name); // Pass the filename along
xhr.send(file);
 

47


2013-02-17





Sadece jQuery ile y├╝kleyebilirsiniz .ajax() .

HTML:

 <form id="upload-form">
    <div>
        <label for="file">File:</label>
        <input type="file" id="file" name="file" />
        <progress class="progress" value="0" max="100"></progress>
    </div>
    <hr />
    <input type="submit" value="Submit" />
</form>
 

CSS

 .progress { display: none; }
 

JavaScript:

 $(document).ready(function(ev) {
    $("#upload-form").on('submit', (function(ev) {
        ev.preventDefault();
        $.ajax({
            xhr: function() {
                var progress = $('.progress'),
                    xhr = $.ajaxSettings.xhr();

                progress.show();

                xhr.upload.onprogress = function(ev) {
                    if (ev.lengthComputable) {
                        var percentComplete = parseInt((ev.loaded / ev.total) * 100);
                        progress.val(percentComplete);
                        if (percentComplete === 100) {
                            progress.hide().val(0);
                        }
                    }
                };

                return xhr;
            },
            url: 'upload.php',
            type: 'POST',
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData: false,
            success: function(data, status, xhr) {
                // ...
            },
            error: function(xhr, status, error) {
                // ...
            }
       });
    }));
});
 

46







Bunu ge├žmi┼čte yapt─▒─č─▒m en basit ve en sa─člam yol, formunuzla birlikte gizli bir iFrame etiketini hedeflemektir - o zaman sayfay─▒ yeniden y├╝klemeden iframe i├žinde g├Ânderir.

Bir eklenti, JavaScript veya HTML d─▒┼č─▒nda ba┼čka bir "sihir" bi├žimi kullanmak istemiyorsan─▒z. Tabi bunu JavaScript ile birle┼čtirebilirsin ya da ...

 <form target="iframe" action="" method="post" enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>

<iframe name="iframe" id="iframe" style="display:none" ></iframe>
 

Ayr─▒ca onLoad sunucu hatalar─▒ veya ba┼čar─▒ yan─▒tlar─▒ i├žin iframe i├žeri─čini okuyabilir ve daha sonra bunu kullan─▒c─▒ya verebilirsiniz.

Chrome, iFrames ve onLoad

-note- sadece y├╝kleme / indirme yaparken bir UI engelleyicisini nas─▒l kuraca─č─▒n─▒zla ilgileniyorsan─▒z okumaya devam etmeniz yeterlidir.

┼×u anda Chrome, dosyalar─▒ aktarmak i├žin kullan─▒ld─▒─č─▒nda iframe i├žin onLoad olay─▒n─▒ tetiklemiyor. Firefox, IE ve Edge, dosya aktar─▒mlar─▒ i├žin onload olay─▒n─▒ ba┼člat─▒r.

Chrome i├žin ├žal─▒┼čt─▒─č─▒m tek ├ž├Âz├╝m, ├žerez kullanmakt─▒.

Temelde y├╝kleme / indirme ba┼člad─▒─č─▒nda bunu yapmak i├žin:

  • [M├╝┼čteri Taraf─▒] Bir ├žerezin varl─▒─č─▒n─▒ aramak i├žin bir aral─▒k ba┼člat
  • [Sunucu Taraf─▒] Dosya verileriyle ne gerekiyorsa yap─▒n
  • [Server Side] ├çerezleri m├╝┼čteri taraf─▒ aral─▒─č─▒ i├žin ayarla
  • [M├╝┼čteri Taraf─▒] Aral─▒─č─▒, ├žerezi g├Âr├╝r ve onLoad olay─▒ gibi kullan─▒r. ├ľrne─čin, bir UI engelleyicisini ba┼člatabilir ve ard─▒ndan OnLoad (ya da ├žerez yap─▒ld─▒─č─▒nda) UI engelleyicisini kald─▒rabilirsiniz.

Bunun i├žin bir ├žerez kullanmak ├žirkin ancak i┼če yar─▒yor.

─░ndirirken Chrome i├žin bu sorunu ele almak i├žin bir jQuery eklentisi yapt─▒m, burada bulabilirsiniz

https://github.com/ArtisticPhoenix/jQuery-Plugins/blob/master/iDownloader.js

Ayn─▒ temel prensip ayn─▒ zamanda y├╝kleme i├žin de ge├žerlidir.

─░ndiriciyi kullanmak i├žin (a├ž─▒k├ža JS'yi dahil edin)

  $('body').iDownloader({
     "onComplete" : function(){
          $('#uiBlocker').css('display', 'none'); //hide ui blocker on complete
     }
 });

 $('somebuttion').click( function(){
      $('#uiBlocker').css('display', 'block'); //block the UI
      $('body').iDownloader('download', 'htttp://example.com/location/of/download');
 });
 

Sunucu taraf─▒nda, dosya verilerini aktarmadan hemen ├Ânce ├žerezleri olu┼čturun.

  setcookie('iDownloader', true, time() + 30, "/");
 

Eklenti ├žerezi g├Ârecek ve ard─▒ndan onComplete geri aramay─▒ tetikleyecektir .


43







Buldu─čum bir ├ž├Âz├╝m, <form> hedefin gizli bir iFrame olmas─▒n─▒ sa─člamakt─▒. ─░Frame daha sonra kullan─▒c─▒ya kullan─▒c─▒n─▒n tamamlanm─▒┼č oldu─čunu g├Âstermek i├žin JS'yi ├žal─▒┼čt─▒rabilir (sayfa y├╝klendi─činde).


32







Bunu bir Rails ortam─▒nda yazd─▒m . Hafif jQuery-form eklentisini kullan─▒yorsan─▒z, sadece yakla┼č─▒k be┼č sat─▒r JavaScript.

Buradaki zorluk, standart remote_form_for ├žok par├žal─▒ form g├Ânderimini anlamad─▒─č─▒ i├žin AJAX y├╝klemesinin ├žal─▒┼čmas─▒n─▒ sa─člamak . Rails, AJAX iste─čiyle geri arad─▒─č─▒ dosya verilerini g├Ândermeyecek.

JQuery-form eklentisinin devreye girdi─či yer buras─▒d─▒r.

─░┼čte bunun i├žin Rails kodu:

 <% remote_form_for(:image_form, 
                   :url => { :controller => "blogs", :action => :create_asset }, 
                   :html => { :method => :post, 
                              :id => 'uploadForm', :multipart => true }) 
                                                                        do |f| %>
 Upload a file: <%= f.file_field :uploaded_data %>
<% end %>
 

─░┼čte ili┼čkili JavaScript:

 $('#uploadForm input').change(function(){
 $(this).parent().ajaxSubmit({
  beforeSubmit: function(a,f,o) {
   o.dataType = 'json';
  },
  complete: function(XMLHttpRequest, textStatus) {
   // XMLHttpRequest.responseText will contain the URL of the uploaded image.
   // Put it in an image element you create, or do with it what you will.
   // For example, if you have an image elemtn with id "my_image", then
   //  $('#my_image').attr('src', XMLHttpRequest.responseText);
   // Will set that image tag to display the uploaded image.
  },
 });
});
 

Ve i┼čte Rails denetleyici eylemi, g├╝zel vanilya:

  @image = Image.new(params[:image_form])
 @image.save
 render :text => @image.public_filename
 

Bunu son birka├ž haftad─▒r Bloggity ile kullan─▒yorum ve bir ┼čampiyon gibi ├žal─▒┼čt─▒.


32







Basit Ajax Y├╝kleyici ba┼čka bir se├ženektir:

https://github.com/LPology/Simple-Ajax-Uploader

  • ├çapraz taray─▒c─▒ - IE7 +, Firefox, Chrome, Safari, Opera ile ├žal─▒┼č─▒r
  • Birden ├žok, ayn─▒ anda y├╝klemeyi destekler - HTML5 d─▒┼č─▒ taray─▒c─▒larda bile
  • Flash veya harici CSS yok - sadece bir 5Kb Javascript dosyas─▒
  • Tam taray─▒c─▒lar aras─▒ ilerleme ├žubuklar─▒ i├žin iste─če ba─čl─▒ yerle┼čik destek (PHP'nin APC uzant─▒s─▒n─▒ kullanarak)
  • Esnek ve ├Âzelle┼čtirilebilir - herhangi bir ├Â─čeyi y├╝kle d├╝─čmesi olarak kullan─▒n, kendi ilerleme g├Âstergelerinize stil verin
  • Form gerekmez, yaln─▒zca y├╝kleme d├╝─čmesi olarak i┼člev g├Ârecek bir ├Â─če sa─člay─▒n
  • MIT lisans─▒ - ticari projelerde kullanmak ├╝cretsiz

├ľrnek kullan─▒m:

 var uploader = new ss.SimpleUpload({
    button: $('#uploadBtn'), // upload button
    url: '/uploadhandler', // URL of server-side upload handler
    name: 'userfile', // parameter name of the uploaded file
    onSubmit: function() {
        this.setProgressBar( $('#progressBar') ); // designate elem as our progress bar
    },
    onComplete: function(file, response) {
        // do whatever after upload is finished
    }
});
 

31







jQuery Uploadify , dosyalar─▒ y├╝klemek i├žin daha ├Ânce kulland─▒─č─▒m ba┼čka bir iyi eklentidir. JavaScript kodu a┼ča─č─▒daki kadar basittir: kod. Ancak, yeni s├╝r├╝m Internet ExplorerÔÇÖda ├žal─▒┼čm─▒yor.

 $('#file_upload').uploadify({
    'swf': '/public/js/uploadify.swf',
    'uploader': '/Upload.ashx?formGuid=' + $('#formGuid').val(),
    'cancelImg': '/public/images/uploadify-cancel.png',
    'multi': true,
    'onQueueComplete': function (queueData) {
        // ...
    },
    'onUploadStart': function (file) {
        // ...
    }
});
 

├çok fazla arama yapt─▒m ve herhangi bir eklenti olmadan ve sadece ajax ile dosya y├╝klemek i├žin ba┼čka bir ├ž├Âz├╝me ula┼čt─▒m. ├ç├Âz├╝m a┼ča─č─▒daki gibidir:

 $(document).ready(function () {
    $('#btn_Upload').live('click', AjaxFileUpload);
});

function AjaxFileUpload() {
    var fileInput = document.getElementById("#Uploader");
    var file = fileInput.files[0];
    var fd = new FormData();
    fd.append("files", file);
    var xhr = new XMLHttpRequest();
    xhr.open("POST", 'Uploader.ashx');
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
             alert('success');
        }
        else if (uploadResult == 'success')
            alert('error');
    };
    xhr.send(fd);
}
 

24







─░┼čte nas─▒l dosya y├╝klemek i├žin ba┼čka bir ├ž├Âz├╝m ( herhangi bir eklenti olmadan )

Basit Javascriptleri ve AJAX'i kullanma (ilerleme ├žubu─ču ile)

HTML b├Âl├╝m├╝

 <form id="upload_form" enctype="multipart/form-data" method="post">
    <input type="file" name="file1" id="file1"><br>
    <input type="button" value="Upload File" onclick="uploadFile()">
    <progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
    <h3 id="status"></h3>
    <p id="loaded_n_total"></p>
</form>
 

Js par├žas─▒

 function _(el){
    return document.getElementById(el);
}
function uploadFile(){
    var file = _("file1").files[0];
    // alert(file.name+" | "+file.size+" | "+file.type);
    var formdata = new FormData();
    formdata.append("file1", file);
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", progressHandler, false);
    ajax.addEventListener("load", completeHandler, false);
    ajax.addEventListener("error", errorHandler, false);
    ajax.addEventListener("abort", abortHandler, false);
    ajax.open("POST", "file_upload_parser.php");
    ajax.send(formdata);
}
function progressHandler(event){
    _("loaded_n_total").innerHTML = "Uploaded "+event.loaded+" bytes of "+event.total;
    var percent = (event.loaded / event.total) * 100;
    _("progressBar").value = Math.round(percent);
    _("status").innerHTML = Math.round(percent)+"% uploaded... please wait";
}
function completeHandler(event){
    _("status").innerHTML = event.target.responseText;
    _("progressBar").value = 0;
}
function errorHandler(event){
    _("status").innerHTML = "Upload Failed";
}
function abortHandler(event){
    _("status").innerHTML = "Upload Aborted";
}
 

PHP b├Âl├╝m├╝

 <?php
$fileName = $_FILES["file1"]["name"]; // The file name
$fileTmpLoc = $_FILES["file1"]["tmp_name"]; // File in the PHP tmp folder
$fileType = $_FILES["file1"]["type"]; // The type of file it is
$fileSize = $_FILES["file1"]["size"]; // File size in bytes
$fileErrorMsg = $_FILES["file1"]["error"]; // 0 for false... and 1 for true
if (!$fileTmpLoc) { // if file not chosen
    echo "ERROR: Please browse for a file before clicking the upload button.";
    exit();
}
if(move_uploaded_file($fileTmpLoc, "test_uploads/$fileName")){ // assuming the directory name 'test_uploads'
    echo "$fileName upload is complete";
} else {
    echo "move_uploaded_file function failed";
}
?>
 

─░┼čte ├ľRNEK uygulama


22







 var formData=new FormData();
formData.append("fieldname","value");
formData.append("image",$('[name="filename"]')[0].files[0]);

$.ajax({
    url:"page.php",
    data:formData,
    type: 'POST',
    dataType:"JSON",
    cache: false,
    contentType: false,
    processData: false,
    success:function(data){ }
});
 

G├Âr├╝nt├╝ler dahil t├╝m de─čerlerinizi g├Ândermek i├žin form verilerini kullanabilirsiniz.


16







Jquery ile zaman uyumsuz olarak dosya y├╝klemek i├žin a┼ča─č─▒daki ad─▒mlar─▒ kullan─▒n:

adim 1 Projenizde Nuget y├Âneticisini a├ž─▒n ve paket ekleyin (jquery fileupload (arama kutusuna yazman─▒z yeterlidir ve onu kuracakt─▒r.)) URL: https://github.com/blueimp/jQuery-File- Y├╝kleme

adim 2 Yukar─▒daki paketi ├žal─▒┼čt─▒rarak projeye zaten eklenmi┼č olan HTML dosyalar─▒na a┼ča─č─▒daki komut dosyalar─▒n─▒ ekleyin:

jquery.ui.widget.js

jquery.iframe-transport.js

jquery.fileupload.js

adim 3 A┼ča─č─▒daki kod uyar─▒nca dosya y├╝kleme kontrol├╝n├╝ yaz─▒n:

 <input id="upload" name="upload" type="file" />
 

adim 4 uploadFile gibi bir js y├Ântemi yaz─▒n:

  function uploadFile(element) {

            $(element).fileupload({

                dataType: 'json',
                url: '../DocumentUpload/upload',
                autoUpload: true,
                add: function (e, data) {           
                  // write code for implementing, while selecting a file. 
                  // data represents the file data. 
                  //below code triggers the action in mvc controller
                  data.formData =
                                    {
                                     files: data.files[0]
                                    };
                  data.submit();
                },
                done: function (e, data) {          
                   // after file uploaded
                },
                progress: function (e, data) {

                   // progress
                },
                fail: function (e, data) {

                   //fail operation
                },
                stop: function () {

                  code for cancel operation
                }
            });

        };
 

adim 5 Haz─▒r fonksiyon ├ža─čr─▒s─▒ eleman dosya y├╝kleme i┼člemi a┼ča─č─▒daki gibidir.

 $(document).ready(function()
{
    uploadFile($('#upload'));

});
 

adim 6 MVC denetleyicisini ve ─░┼člemi a┼ča─č─▒daki gibi yaz─▒n:

 public class DocumentUploadController : Controller
    {       

        [System.Web.Mvc.HttpPost]
        public JsonResult upload(ICollection<HttpPostedFileBase> files)
        {
            bool result = false;

            if (files != null || files.Count > 0)
            {
                try
                {
                    foreach (HttpPostedFileBase file in files)
                    {
                        if (file.ContentLength == 0)
                            throw new Exception("Zero length file!");                       
                        else 
                            //code for saving a file

                    }
                }
                catch (Exception)
                {
                    result = false;
                }
            }


            return new JsonResult()
                {
                    Data=result
                };


        }

    }
 

14







Modern bir yakla┼č─▒m jQuery olmadan kullanmakt─▒r FileList dan geri almak nesne <input type="file"> zaman Kullan─▒c─▒ se├žer bir dosya (lar) ve daha sonra kullanmak Fetch FileList bir sar─▒l─▒ g├Ândermek i├žin FormData nesnesi.

 // The input DOM element // <input type="file">
const inputElement = document.querySelector('input[type=file]');

// Listen for a file submit from user
inputElement.addEventListener('change', () => {
    const data = new FormData();
    data.append('file', inputElement.files[0]);
    data.append('imageName', 'flower');

    // You can then post it to your server.
    // Fetch can accept an object of type FormData on its  body
    fetch('/uploadImage', {
        method: 'POST',
        body: data
    });
});
 

10







Kullanabilirsiniz

 $(function() {
    $("#file_upload_1").uploadify({
        height        : 30,
        swf           : '/uploadify/uploadify.swf',
        uploader      : '/uploadify/uploadify.php',
        width         : 120
    });
});
 

g├Âsteri


9


2014-05-12





| HTML5'in readAsDataURL () veya bir base64 kodlay─▒c─▒y─▒ kullanarak dosyay─▒ base64'e d├Ân├╝┼čt├╝r├╝n . Burada keman

 var reader = new FileReader();

        reader.onload = function(readerEvt) {
            var binaryString = readerEvt.target.result;
            document.getElementById("base64textarea").value = btoa(binaryString);
        };

        reader.readAsBinaryString(file);
 

Sonra almak i├žin:

 window.open("data:application/octet-stream;base64," + base64);
 

9







Form dosyalar─▒n─▒ ├Ânizlemenizi ve sunucuya g├Ândermenizi sa─člayan ├žal─▒┼čma demosuyla ├ž├Âz├╝lm├╝┼č bir ├ž├Âz├╝m burada g├Ârebilirsiniz . Durumunuzda , sunucuya dosya y├╝klemesini kolayla┼čt─▒rmak i├žin Ajax kullanman─▒z gerekir :

 <from action="" id="formContent" method="post" enctype="multipart/form-data">
    <span>File</span>
    <input type="file" id="file" name="file" size="10"/>
    <input id="uploadbutton" type="button" value="Upload"/>
</form>
 

G├Ânderilen veriler bir form verisidir. JQuery'nizde, form dosyas─▒n─▒ a┼ča─č─▒da g├Âsterildi─či ┼čekilde g├Ândermek i├žin d├╝─čme t─▒klamas─▒ yerine form g├Ânderme i┼člevini kullan─▒n.

 $(document).ready(function () {
   $("#formContent").submit(function(e){

     e.preventDefault();
     var formdata = new FormData(this);

 $.ajax({
     url: "ajax_upload_image.php",
     type: "POST",
     data: formdata,
     mimeTypes:"multipart/form-data",
     contentType: false,
     cache: false,
     processData: false,
     success: function(){

     alert("successfully submitted");

     });
   });
});
 

Daha fazla ayr─▒nt─▒ g├Âr├╝nt├╝le


9







├ľrnek: E─čer jQuery kullan─▒yorsan─▒z, bir y├╝kleme dosyas─▒n─▒ kolayca yapabilirsiniz. Bu, k├╝├ž├╝k ve g├╝├žl├╝ bir jQuery eklentisidir, http://jquery.malsup.com/form/ .

├ľrnek

 var $bar   = $('.ProgressBar');
$('.Form').ajaxForm({
  dataType: 'json',

  beforeSend: function(xhr) {
    var percentVal = '0%';
    $bar.width(percentVal);
  },

  uploadProgress: function(event, position, total, percentComplete) {
    var percentVal = percentComplete + '%';
    $bar.width(percentVal)
  },

  success: function(response) {
    // Response
  }
});
 

Umar─▒m yard─▒mc─▒ olur


9







XMLHttpRequest kullanarak (flash ve iframe ba─č─▒ml─▒l─▒─č─▒ olmadan) e┼čzamans─▒z y├╝kleme yaparken dosya ad─▒yla birlikte ek parametreler iletebilirsiniz. FormData ile ek parametre de─čeri ekleyin ve y├╝kleme iste─čini g├Ânderin.


 var formData = new FormData();
formData.append('parameter1', 'value1');
formData.append('parameter2', 'value2'); 
formData.append('file', $('input[type=file]')[0].files[0]);

$.ajax({
    url: 'post back url',
    data: formData,
// other attributes of AJAX
});
 

Ayr─▒ca, Syncfusion JavaScript UI dosya y├╝kleme ├Âzelli─či, sadece olay arg├╝man─▒n─▒ kullanarak bu senaryo i├žin ├ž├Âz├╝m sunar. E─čer belgeleri bulabilirsiniz burada ve bu kontrol├╝ hakk─▒nda daha fazla ayr─▒nt─▒ burada ba─člant─▒ a├ž─▒klama girin burada


8







Aray─▒n uyumsuz bir dosya i├žin y├╝kleme i┼člemini Ta┼č─▒ma : Burada https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

Ba─člant─▒dan ├Ârnek

 <?php
if (isset($_FILES['myFile'])) {
    // Example:
    move_uploaded_file($_FILES['myFile']['tmp_name'], "uploads/" . $_FILES['myFile']['name']);
    exit;
}
?><!DOCTYPE html>
<html>
<head>
    <title>dnd binary upload</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript">
        function sendFile(file) {
            var uri = "/index.php";
            var xhr = new XMLHttpRequest();
            var fd = new FormData();

            xhr.open("POST", uri, true);
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    // Handle response.
                    alert(xhr.responseText); // handle response.
                }
            };
            fd.append('myFile', file);
            // Initiate a multipart/form-data upload
            xhr.send(fd);
        }

        window.onload = function() {
            var dropzone = document.getElementById("dropzone");
            dropzone.ondragover = dropzone.ondragenter = function(event) {
                event.stopPropagation();
                event.preventDefault();
            }

            dropzone.ondrop = function(event) {
                event.stopPropagation();
                event.preventDefault();

                var filesArray = event.dataTransfer.files;
                for (var i=0; i<filesArray.length; i++) {
                    sendFile(filesArray[i]);
                }
            }
        }
    </script>
</head>
<body>
    <div>
        <div id="dropzone" style="margin:30px; width:500px; height:300px; border:1px dotted grey;">Drag & drop your file here...</div>
    </div>
</body>
</html>
 

7







Bu benim ├ž├Âz├╝m├╝m.

 <form enctype="multipart/form-data">    

    <div class="form-group">
        <label class="control-label col-md-2" for="apta_Description">Description</label>
        <div class="col-md-10">
            <input class="form-control text-box single-line" id="apta_Description" name="apta_Description" type="text" value="">
        </div>
    </div>

    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
 

ve js

 <script>

    $(':button').click(function () {
        var formData = new FormData($('form')[0]);
        $.ajax({
            url: '@Url.Action("Save", "Home")',  
            type: 'POST',                
            success: completeHandler,
            data: formData,
            cache: false,
            contentType: false,
            processData: false
        });
    });    

    function completeHandler() {
        alert(":)");
    }    
</script>
 

kontrol├Âr

 [HttpPost]
public ActionResult Save(string apta_Description, HttpPostedFileBase file)
{
    return Json(":)");
}
 

4







HTML5 ve JavaScript'i kullanmak , zaman uyumsuz y├╝klemek olduk├ža kolayd─▒r, html ile birlikte y├╝kleme mant─▒─č─▒n─▒ olu┼čturuyorum, bu, api'ye ihtiya├ž duydu─ču i├žin tam olarak ├žal─▒┼čmaz, ancak /upload web sitenizin k├Âk├╝nden ├ža─čr─▒lan son noktaya sahipseniz, nas─▒l ├žal─▒┼čt─▒─č─▒n─▒ g├Âsterir. bu kod sizin i├žin ├žal─▒┼čmal─▒d─▒r:

 const asyncFileUpload = () => {
  const fileInput = document.getElementById("file");
  const file = fileInput.files[0];
  const uri = "/upload";
  const xhr = new XMLHttpRequest();
  xhr.upload.onprogress = e => {
    const percentage = e.loaded / e.total;
    console.log(percentage);
  };
  xhr.onreadystatechange = e => {
    if (xhr.readyState === 4 && xhr.status === 200) {
      console.log("file uploaded");
    }
  };
  xhr.open("POST", uri, true);
  xhr.setRequestHeader("X-FileName", file.name);
  xhr.send(file);
} 
 <form>
  <span>File</span>
  <input type="file" id="file" name="file" size="10" />
  <input onclick="asyncFileUpload()" id="upload" type="button" value="Upload" />
</form> 

Ayr─▒ca XMLHttpReques hakk─▒nda baz─▒ ek bilgiler:

XMLHttpRequest Nesnesi

T├╝m modern taray─▒c─▒lar XMLHttpRequest nesnesini destekler. XMLHttpRequest nesnesi, sahne arkas─▒nda bir web sunucusuyla veri al─▒┼čveri┼činde bulunmak i├žin kullan─▒labilir. Bu, t├╝m sayfay─▒ yeniden y├╝klemeden, bir web sayfas─▒n─▒n b├Âl├╝mlerini g├╝ncellemenin m├╝mk├╝n oldu─ču anlam─▒na gelir.


XMLHttpRequest Nesnesi Olu┼čturma

T├╝m modern taray─▒c─▒lar (Chrome, Firefox, IE7 +, Edge, Safari, Opera) yerle┼čik bir XMLHttpRequest nesnesine sahiptir.

XMLHttpRequest nesnesi olu┼čturmak i├žin s├Âzdizimi:

de─či┼čken = yeni XMLHttpRequest ();


Etki Alanlar─▒na Eri┼čim

G├╝venlik nedeniyle, modern taray─▒c─▒lar etki alanlar─▒ aras─▒nda eri┼čime izin vermiyor.

Bu, hem web sayfas─▒n─▒n hem de y├╝klemeye ├žal─▒┼čt─▒─č─▒ XML dosyas─▒n─▒n ayn─▒ sunucuda bulunmas─▒ gerekti─či anlam─▒na gelir.

W3Schools ├Ârnekleri W3Schools etki alan─▒nda bulunan t├╝m a├ž─▒k XML dosyalar─▒n─▒ i├žerir.

Yukar─▒daki ├Ârne─či kendi web sayfalar─▒n─▒zdan birinde kullanmak istiyorsan─▒z, y├╝kledi─činiz XML dosyalar─▒n─▒n kendi sunucunuzda bulunmas─▒ gerekir.

Daha fazla ayr─▒nt─▒ i├žin, okumaya devam edebilirsiniz burada ...


4







E┼čzamans─▒z ├çoklu Dosya y├╝klemelerini JavaScript veya jQuery kullanarak ve herhangi bir eklenti kullanmadan yapabilirsiniz. ─░lerleme kontrol├╝nde dosya y├╝kleme i┼čleminin ger├žek zamanl─▒ ilerlemesini de g├Âsterebilirsiniz. 2 g├╝zel ba─člant─▒yla kar┼č─▒la┼čt─▒m -

  1. ASP.NET Web Forms, ─░lerleme ├çubu─čuyla ├çok Ama├žl─▒ Dosya Y├╝kleme ├ľzelli─či
  2. JQuery yap─▒lan ASP.NET MVC tabanl─▒ ├žoklu dosya y├╝kleme

Sunucu taraf─▒ dili C #'d─▒r ancak PHP gibi di─čer dillerle ├žal─▒┼čmas─▒n─▒ sa─člamak i├žin baz─▒ de─či┼čiklikler yapabilirsiniz.

Dosya Y├╝kleme ASP.NET Core MVC:

G├Âr├╝n├╝mde html'de dosya y├╝kleme denetimini olu┼čturun:

 <form method="post" asp-action="Add" enctype="multipart/form-data">
    <input type="file" multiple name="mediaUpload" />
    <button type="submit">Submit</button>
</form>
 

┼×imdi kontrol cihaz─▒n─▒zda eylem y├Ântemi olu┼čturun:

 [HttpPost]
public async Task<IActionResult> Add(IFormFile[] mediaUpload)
{
    //looping through all the files
    foreach (IFormFile file in mediaUpload)
    {
        //saving the files
        string path = Path.Combine(hostingEnvironment.WebRootPath, "some-folder-path"); 
        using (var stream = new FileStream(path, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
    }
}
 

hostingEnvironment de─či┼čkeni, a┼ča─č─▒daki gibi ba─č─▒ml─▒l─▒k enjeksiyonunu kullanarak denetleyiciye enjekte edilebilen IHostingEnvironment t├╝r├╝ndedir:

 private IHostingEnvironment hostingEnvironment;
public MediaController(IHostingEnvironment environment)
{
    hostingEnvironment = environment;
}
 

4







Https://uppy.io gibi bir ┼čey kullanmay─▒ da d├╝┼č├╝nebilirsiniz .

Sayfadan uzakla┼čmadan dosya y├╝kleme yapar ve s├╝r├╝kle ve b─▒rak, taray─▒c─▒ ├ž├Âkmeleri / lapa lapa a─člar─▒ durumunda y├╝klemeleri devam ettirmek ve ├Ârn. A├ž─▒k kaynak kodludur ve jQuery / React / Angular / Vue'a dayanmaz, ancak onunla birlikte kullan─▒labilir. Yasal Uyar─▒: yarat─▒c─▒s─▒ olarak ├Ânyarg─▒l─▒y─▒m;)


4


2018-12-21





A┼ča─č─▒daki kodu kullanabilirsiniz.

 async: false(true)
 

4







JavaScript ile daha yeni Fetch API kullanabilirsiniz . Bunun gibi:

 function uploadButtonCLicked(){
    var input = document.querySelector('input[type="file"]')

    fetch('/url', {
      method: 'POST',
      body: input.files[0]
    }).then(res => res.json())   // you can do something with response
      .catch(error => console.error('Error:', error))
      .then(response => console.log('Success:', response));
}                               
 

Avantaj: API al, t├╝m modern taray─▒c─▒lar taraf─▒ndan yerel olarak desteklenir , bu nedenle hi├žbir ┼čey i├že aktarman─▒z gerekmez. Ayr─▒ca, fetch () ├Â─česinin daha sonra e┼čzamans─▒z olarak kullan─▒larak i┼členen bir S├Âz verdi─čini de unutmay─▒n .then(..code to handle response..) .


3



─░lgili yay─▒nlar


JQuery'nin zamanuyumsuz Ajax iste─či yerine zamanuyumlu bir i┼člemi ger├žekle┼čtirmesini nas─▒l sa─člayabilirim?

JSP / Servlet kullanarak dosyalar─▒ sunucuya nas─▒l y├╝kleyebilirim?

Redux'ta asenkron eylemler ger├žekle┼čtiren kal─▒c─▒ bir ileti┼čim kutusunu nas─▒l g├Âr├╝nt├╝leyebilirim?

HTTP POST kullanarak, HTML ve PHP ile birden fazla dosyay─▒ nas─▒l se├žebilir ve y├╝kleyebilirim?

Javascript'te E┼čzamans─▒z bir i┼člevi nas─▒l olu┼čturabilirim?

├ľzel bir dosya taray─▒c─▒s─▒n─▒ / y├╝kleyiciyi CKEditor ile nas─▒l entegre edebilirsiniz?

Harici bir komutu Python'dan e┼čzamans─▒z olarak nas─▒l ├žal─▒┼čt─▒rabilirim?

Angularjs e2e iletki testinde dosya y├╝kleme

Dosyalar─▒ Macun (ssh) [kapal─▒] kullanarak sunucuya nas─▒l y├╝kleyebilirim?

HTTP POST multipart / form-data ile sunucuya dosya nas─▒l y├╝klenir?

Etiketle ilgili di─čer sorular [javascript]


Python'da stderr'e nas─▒l bas─▒l─▒r?

Bir MySQL veritaban─▒n─▒ h─▒zl─▒ bir ┼čekilde nas─▒l yeniden adland─▒rabilirim (┼čema ad─▒n─▒ de─či┼čtir)?

Bir dizinin JavaScript / jQuery'de belirli bir dize i├žerip i├žermedi─čini nas─▒l bulabilirim? [├žift]

Sol, Sa─č, D─▒┼č ve ─░├ž Birle┼čmeler aras─▒ndaki fark nedir?

Android programl─▒ olarak ekran yo─čunlu─čunu elde?

Scala'n─▒n vaka s─▒n─▒f─▒ ve s─▒n─▒f─▒ aras─▒ndaki fark nedir?

\ r \ n, \ r ve \ n aralar─▒ndaki fark nedir? [├žift]

Model zaten mevcutken, ÔÇťraylarÔÇŁ nas─▒l iskele olu┼čturur?

Java'n─▒n UUID.randomUUID'si ne kadar iyi?

D├╝─č├╝m js ECONNRESET