New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fdownload

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fdownload - npm Package Compare versions

Comparing version 1.1.2 to 1.2.0

84

index.js

@@ -1,83 +0,1 @@

/**
* @param {Str} fileUrl
* @param {Str} fileName
* @param {Obj} opts
*
*/
export default (function (fileUrl, fileName) {
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (!fileUrl) throw new Error("fileUrl is required");
if (!fileName) throw new Error("fileName is required");
function update_progress(e) {
if (e.lengthComputable) {
var percentage = Math.round(e.loaded / e.total * 100);
if (typeof opts.progress === "function") {
opts.progress(e);
}
} else {// console.log(
// "Unable to compute progress information since the total size is unknown"
// );
}
}
function transfer_complete(e) {// if (typeof opts.complete === "function") {
// console.log("The transfer is complete.");
// opts.complete(e);
// }
}
function transfer_failed() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;
if (typeof opts.failed === "function") {
// console.log("An error occurred while transferring the file.");
opts.failed(e);
}
}
function transfer_canceled(e) {
if (typeof opts.canceled === "function") {
// console.log("The transfer has been canceled by the user.");
opts.canceled(e);
}
}
var xhr = new XMLHttpRequest();
xhr.onprogress = update_progress;
xhr.addEventListener("load", transfer_complete, false);
xhr.addEventListener("error", transfer_failed, false);
xhr.addEventListener("abort", transfer_canceled, false);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var blob = xhr.response;
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function (e) {
var elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = e.target.result;
document.body.appendChild(elink);
elink.click();
document.body.removeChild(elink);
if (typeof opts.complete === "function") {
// console.log("The transfer is complete.");
opts.complete(e);
}
};
} else {
transfer_failed();
}
}
};
xhr.open("GET", fileUrl, true);
xhr.responseType = "blob";
xhr.send();
});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).fdownload=t()}(this,function(){"use strict";return function(e,r){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(!e)throw new Error("fileUrl is required");if(!r)throw new Error("fileName is required");function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:window.event;"function"==typeof i.failed&&i.failed(e)}var o=new XMLHttpRequest;o.onprogress=function(e){e.lengthComputable&&(Math.round(e.loaded/e.total*100),"function"==typeof i.progress&&i.progress(e))},o.addEventListener("load",function(e){},!1),o.addEventListener("error",n,!1),o.addEventListener("abort",function(e){"function"==typeof i.canceled&&i.canceled(e)},!1),o.onreadystatechange=function(){if(4==o.readyState)if(200==o.status){var e=o.response,t=new FileReader;t.onload=function(e){var t=function(e){for(var t=atob(e.split(",")[1]),n=t.length,o=new Uint8Array(n),r=e.split(",")[0].split(":")[1].split(";")[0],i=0;i<n;i++)o[i]=t.charCodeAt(i);return new Blob([o],{type:r})}(e.target.result),n=URL.createObjectURL(t),o=document.createElement("a");o.download=r,o.style.display="none",o.href=n,document.body.appendChild(o),o.click(),setTimeout(function(){URL.revokeObjectURL(n)},4e4),document.body.removeChild(o),"function"==typeof i.complete&&i.complete(e)},t.readAsDataURL(e)}else n()},o.open("GET",e),o.responseType="blob",o.send()}});

4

package.json
{
"name": "fdownload",
"version": "1.1.2",
"version": "1.2.0",
"description": "文件下载",

@@ -11,3 +11,3 @@ "main": "index.js",

"dev": "babel src --watch --out-dir .",
"build": "babel src --out-dir ."
"build": "rollup -c"
},

@@ -14,0 +14,0 @@ "devDependencies": {

@@ -30,3 +30,3 @@ /**

}
function transfer_failed(e=window.event) {
function transfer_failed(e = window.event) {
if (typeof opts.failed === "function") {

@@ -43,2 +43,19 @@ // console.log("An error occurred while transferring the file.");

}
function dataURIToBlob(dataURI) {
var binStr = atob(dataURI.split(",")[1]),
len = binStr.length,
arr = new Uint8Array(len),
mimeString = dataURI
.split(",")[0]
.split(":")[1]
.split(";")[0];
for (var i = 0; i < len; i++) {
arr[i] = binStr.charCodeAt(i);
}
return new Blob([arr], {
type: mimeString
});
}
const xhr = new XMLHttpRequest();

@@ -54,17 +71,19 @@ xhr.onprogress = update_progress;

const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function(e) {
const dataBlob = dataURIToBlob(e.target.result);
const url = URL.createObjectURL(dataBlob);
const elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = e.target.result;
elink.href = url;
document.body.appendChild(elink);
elink.click();
setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) ;// 40s revokeObjectURL
document.body.removeChild(elink);
if (typeof opts.complete === "function") {
// console.log("The transfer is complete.");
opts.complete(e);
}
};
}else{
reader.readAsDataURL(blob);
} else {
transfer_failed();

@@ -74,5 +93,8 @@ }

};
xhr.open("GET", fileUrl, true);
// xhr.onload = function () {
// }
xhr.open("GET", fileUrl);
xhr.responseType = "blob";
xhr.send();
};
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc