文件上传、下载的几种方法

下载:AngularJs - http.get/post请求文件下载

(下载还可以直接使用a标签)

// $http.post
var searchExport = {
    id: data.id
};
$http.post('', searchExport, {responseType:'blob'}).success(function (msg, status, headers, config) {   
    var blob = new Blob([msg], { type: headers('Content-Type')});
    var objectUrl = URL.createObjectURL(blob);
    var a = document.createElement("a");
    document.body.appendChild(a);
    a.style = "display: none";
    a.href = objectUrl;
    a.download = headers("Content-Disposition").split(";")[1].split("filename=")[1];
    a.click();
    document.body.removeChild(a);
});
$http({
    method: 'POST',
    url: '',
    data: {},
    responseType: 'blob'
}).success(function (data, status, headers) {
    ...
}).error(function (msg) {
    ...
});

// $http.get
$http.post('', {'params': searchExport}, {responseType:'blob'}).success(function (msg, status, headers, config) { 
    ...
});
$http({
    url: '',
    method: "GET",
    params: {},
    responseType: "blob"               
}).then(function (response, status, header, config, statusText) {
   ...
});

上传:使用form-data上传

enctype="multipart/form-data" 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。

// input 的name属性是必须值,用于获取表单数据

// HTML
<form id="addInfoForm" enctype="multipart/form-data" noinvalid>
    <div style="position: relative;width: 60%;;padding: 0;">
        <button class="ui button green" type="button">上传规则文件</button>
        <input type="file" id="ruleFile" name="file" style="position: absolute;top: 0;left:0;opacity: 0;height: 35px;width: 37% !important;"/>
        <span id="filename" style="display: inline-block;max-width: 60%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"></span>
    </div>
</form>

//JS
$('#addInfoForm').undelegate('#ruleFile', 'change').delegate('#ruleFile', 'change', function (e) {
    self.ruleFile = e.target.files[0];
   if (self.ruleFile.size<=0) {
      Base.alert('所选文件为空白文件!', 3);
        self.ruleFile = null;
      return;
   }
   $("#addInfoForm").html(self.ruleFile);
});
var form = new FormData(document.getElementById("addInfoForm"));
form.append('isOk', self.isOk);
$.ajax({
    url:"",
    type:"post",
    headers: {},
    data: form,
    processData:false,
    contentType:false,
    success:function(res){
    },
    error:function(res){
    }
});

上传:使用XMLHttpRequest上传

(这个自己还未使用,查资料看到就先记录一下,礼貌贴原文链接:https://www.cnblogs.com/clumiere/p/4444073.html

// HTML
<input type="file" id="ipt-file"/>
<button type="button" id="btn-upload">上传</button>
<div class="progress-bar">
    <div class="progress" id="progress"></div>
</div>
<p id="info"></p>

//JS
var button = document.querySelector("#btn-upload"),
    input = document.querySelector("#ipt-file"),
    progress = document.querySelector("#progress"),
    info = document.querySelector("#info"),
    loadPercent = 0;
 
var upload = function() {
    if (input.files.length === 0) {
        console.log("未选择文件");
        return;
    };
    var formData = new FormData();
    formData.append("file", input.files[0]);
    var xhr = new XMLHttpRequest();
    //文件上传的进度
    xhr.addEventListener("progress", function(evt) {
        if (evt.lengthComputable) {
            loadPercent = Math.round(evt.loaded * 100 / evt.total);
        };
    }, false);
    //uploadComplete
    xhr.addEventListener("load", function(res){
        
    }, false);
    //文件上传失败
    xhr.addEventListener("error", function() {
        input.files= null;
        loadPercent = 0;
    }, false);
    //取消了上传
    xhr.addEventListener("abort", function(){
        
    }, false);
    xhr.open("POST", '', true);
    xhr.responseType = "blob";
    // xhr.setRequestHeader(header, token);
    xhr.send(formData);
};
button.addEventListener("click", upload, false);

上传:使用第三方插件上传(WebUploader)

(详细可查看官网:https://fex.baidu.com/webuploader/doc/index.html

// HTML
<div class="uploadBox">
    <div class="uploadBtnBox">
        <label id="uploadFileInput">点击选择文件</label>
    </div>
    <div id="uploadifyList"></div>
</div>

// JS
var uploader = WebUploader.create({
    auto: false,
    swf: "",
    server: '',  //上传URL
    headers: {},
    pick: {
        id: "#uploadFileInput",
        label: '点击选择文件',
        name: "multiFile"
    },
    fileVal: "file",
    duplicate: false,
    formData: {},   //上传的其他参数
    resize: false,  //不压缩img
    prepareNextFile: true,
    chunked: false,
    threads: 1,
    fileNumLimit: 10,  // 限制上传文件个数
    fileSizeLimit: '',  //总共文件限制大小
    fileSingleSizeLimit: 500 * 1024 * 1024,  //单个文件限制50M大小
    method: 'POST',
    timeout: 0, //超时时间(0,不限制)、2 * 60 * 1000(2min)
    accept: {
        title: "文件上传",
        extensions: "",  //上传文件格式
        mimeTypes: ''
    }
});

// 选择文件
uploader.on("fileQueued", function (file) { });
// 准备上传
uploader.on("startUpload", function () {});
// 上传进度
uploader.on("uploadProgress", function (file, percentage) {});
// 上传完成
uploader.on("uploadAccept", function (file, data) {});
// 上传失败
uploader.on("uploadError", function (file, reason) {
    if (file.name == uploader.getFiles()[uploader.getFiles().length - 1].name) {
        uploader.reset();  
    };
});
// 选择文件报错
uploader.on("error", function (str, file) {});
// 上传函数
$scope.fnSubmit = function () {
    if (uploader.getFiles().length !== 0) {
        uploader.upload();  // 上传
    };
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
新颖网络上传插件(StorageWebPlug)是一个支持超大文件(2GB,可扩展)上传的COM控件, 具备断点续传,文件MD5验证,大大提高上传效率、节省带宽,有详细的上传进度显示,支持多种脚本语言,欢迎下载体验。免费提供JavaScript SDK包。 产品特点: 1、文件上传使用增强的FTP协议,用户使用浏览器就可以上传超大文件到服务器(支持上传超过1G的文件)。 2、支持断点续传,系统智能续传未上传的文件,续传操作更简单,更方便,更快捷。 3、支持文件批量上传, 一次可以上传多个文件. 上传时有详细的状态显示(包括单个文件进度,整体进度,传输速率,剩余时间等)。 4、新颖网络免费提供JavaScript SDK包。通过新颖网络提供的封装好的JavaScript类库用户可以快速的与现有系统整合。 5、StorageWebPlug提供完善的接口和帮助文档,开发文档。开发人员可以动态设置上传保存路径, 设置允许扩展名, 允许最大大小等,可自定义强。 6、支持各种代理(HTTP, Socket4, Socket5等)。 7、组件采用多线程机制来保证上传效率。 8、支持批量文件上传, 用户可以一次性上传批量文件. 客户端可以绑定HTML表单变量, 服务端并可以接收表单变量 9、服务端文件保存路径可以随意指定,服务端文件保存路径可以灵活变化。保存路径支持网络路径。 10、为提高安全性,服务端组件可以指定用户权限 11、可以限制上传单个文件大小, 控制上传带宽上限, 允许文件扩展名, 拒绝文件扩展名等 12、上传数据时会根据网络状况来控制数据包大小, 避免网络堵塞 13、控件采用ATL编写, cab包只有59KB, 用56k的modem下载不会超过12秒 14、服务端支持Windows 2000 Server/Windows 2003 Server/Windows NT/Windows XP/Unix/Linux等操作系统 15、通过新颖网络业界领先的设计水平打造的操作界面可以帮助您的系统和产品获得更高的品质。 产品介绍:http://www.ncmem.com/service_storagewebplug.aspx 下载地址:http://www.ncmem.com/download.aspx

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值