น่าเสียดายที่คำตอบของ @ BrianFreud ไม่ตรงกับความต้องการของฉันฉันมีความต้องการที่แตกต่างกันเล็กน้อยและฉันรู้ว่านั่นไม่ใช่คำตอบสำหรับคำถามของ @ BrianFreud แต่ฉันจะทิ้งไว้ที่นี่เพราะมีคนจำนวนมากมาที่นี่ด้วยความต้องการเดียวกันของฉัน ฉันต้องการบางอย่างเช่น 'จะรับไฟล์หรือหยดจาก URL ได้อย่างไร' และคำตอบที่ถูกต้องในปัจจุบันไม่ตรงกับความต้องการของฉันเพราะไม่ใช่ข้ามโดเมน
ฉันมีเว็บไซต์ที่ใช้ภาพจาก Amazon S3 / Azure Storage และที่นั่นฉันเก็บวัตถุที่ตั้งชื่อด้วยตัวบ่งชี้ที่ไม่ซ้ำกัน:
ตัวอย่าง: http: //****.blob.core.windows.net/systemimages/bf142dc9-0185-4aee-a3f4-1e5e95a09bcf
ภาพนี้บางส่วนควรดาวน์โหลดจากอินเทอร์เฟซระบบของเรา เพื่อหลีกเลี่ยงการส่งผ่านทราฟฟิกนี้ผ่านเซิร์ฟเวอร์ HTTP ของฉันเนื่องจากอ็อบเจ็กต์นี้ไม่ต้องการความปลอดภัยใด ๆ ในการเข้าถึง (ยกเว้นโดยการกรองโดเมน) ฉันตัดสินใจที่จะส่งคำขอโดยตรงบนเบราว์เซอร์ของผู้ใช้และใช้การประมวลผลภายในเพื่อตั้งชื่อจริงให้ไฟล์และ ส่วนขยาย.
เพื่อให้บรรลุผลสำเร็จฉันได้ใช้บทความดีๆจาก Henry Algus:
 http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
1. ขั้นตอนแรก: เพิ่มการสนับสนุนไบนารีใน jquery
/**
*
* jquery.binarytransport.js
*
* @description. jQuery ajax transport for making binary data type requests.
* @version 1.0 
* @author Henry Algus <henryalgus@gmail.com>
*
*/
// use this transport for "binary" data type
$.ajaxTransport("+binary", function (options, originalOptions, jqXHR) {
    // check for conditions and support for blob / arraybuffer response type
    if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {
        return {
            // create new XMLHttpRequest
            send: function (headers, callback) {
                // setup all variables
                var xhr = new XMLHttpRequest(),
        url = options.url,
        type = options.type,
        async = options.async || true,
        // blob or arraybuffer. Default is blob
        dataType = options.responseType || "blob",
        data = options.data || null,
        username = options.username || null,
        password = options.password || null;
                xhr.addEventListener('load', function () {
                    var data = {};
                    data[options.dataType] = xhr.response;
                    // make callback and send data
                    callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());
                });
                xhr.open(type, url, async, username, password);
                // setup custom headers
                for (var i in headers) {
                    xhr.setRequestHeader(i, headers[i]);
                }
                xhr.responseType = dataType;
                xhr.send(data);
            },
            abort: function () {
                jqXHR.abort();
            }
        };
    }
});
2. ขั้นตอนที่สอง: ส่งคำขอโดยใช้ประเภทการขนส่งนี้
function downloadArt(url)
{
    $.ajax(url, {
        dataType: "binary",
        processData: false
    }).done(function (data) {
        // just my logic to name/create files
        var filename = url.substr(url.lastIndexOf('/') + 1) + '.png';
        var blob = new Blob([data], { type: 'image/png' });
        saveAs(blob, filename);
    });
}
ตอนนี้คุณสามารถใช้ Blob ที่สร้างขึ้นตามที่คุณต้องการในกรณีของฉันฉันต้องการบันทึกลงในดิสก์
3. ทางเลือก: บันทึกไฟล์บนคอมพิวเตอร์ของผู้ใช้โดยใช้ FileSaver
ฉันใช้ FileSaver.js เพื่อบันทึกไฟล์ที่ดาวน์โหลดลงในดิสก์หากคุณต้องการทำสิ่งนั้นให้สำเร็จโปรดใช้ไลบรารี javascript นี้:
https://github.com/eligrey/FileSaver.js/
ฉันคาดหวังว่าสิ่งนี้จะช่วยให้ผู้อื่นมีความต้องการเฉพาะเจาะจงมากขึ้น
               
              
XMLHttpRequestไปที่ URL หยด