上传下载文件

Posted wwt2026

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传下载文件相关的知识,希望对你有一定的参考价值。

上传下载文件

上传:

h5中input有个type属性file,可以实现选择文件功能,accept属性可以选择显示的文件类型,默认单选,加个multiple属性可以多选

使用document.querySelector获取,获取的文件信息是不可修改的,如下

// input原生样式略丑,可以隐藏,用自定义节点触发点击事件,
<input onchange="" style="display:none;" accept=".png,.jpg" type="file"id="file" >
<a href="javascript:document.querySelector(‘#file‘).click();">点击选择文件</a>
<img>    


// 获取文件信息数组的第一个文件信息
var input=document.querySelector(‘#file‘);
var file=input.files[0];

可以做预读取处理,比如选择图片后,本地可以获取到文件地址进行预览

var url =URL.createObjectURL(file);
document.querySelector(‘img‘).src=url;

重复选择同一文件,由于选择的文件路径没变导致onchange没有触发,可以修改input的value值或者重新初始化html

input.value="";
input.outerHTML=input.outerHTML;

上传文件使用FormData处理,如果用jQuery的话需要设置processDatacontentTypefalse

  var form = new FormData();
    form.append("file", file);

    xhr = new XMLHttpRequest();
    xhr.open("post", url, true);
    xhr.onload = function () {
        input.value = ‘‘;
        var r = JSON.parse(xhr.responseText)
    };
    xhr.send(form);

后台接收

 var fileStream = Request.Files[0].InputStream;

下载:

// path为下载文件地址就会下载
window.location.href=‘path‘

// 使用iframe
var iframe = document.createElement(‘iframe‘);
iframe.style.display = ‘none‘;
var r = [];
for (var k in data) r.push(k + ‘=‘ + encodeURIComponent(data[k]));
iframe.src = ‘getOilPrice2?‘ + r.join(‘&‘) + ‘&isexport=1‘;
if
document.body.appendChild(iframe);

以上是关于上传下载文件的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

使用 libtorrent 下载特定片段

根据图片的url地址下载图片到本地保存代码片段

Xamarin Android 片段库

将存储在内存中的文件上传到s3

片段中的Firebase数据不是持久的,会重新下载