javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js获得相对路径文件并上传

js获得相对路径文件并上传到服务器的方法

作者:嘎嘎油

由于浏览器的安全限制,Javascript无法直接获取用户上传文件的绝对路径。但是我们可以通过一些技巧来获取文件的相对路径,这篇文章主要给大家介绍了关于js获得相对路径文件并上传到服务器的相关资料,需要的朋友可以参考下

如何通过js获得相对路径文件

已知一个相对路径文件,如何使用js将该文件读取为File格式,最后上传到服务器中呢。

1.最简单的解决方案——fetch

代码

import './index.scss'

// js通过相对路径获取文件
function FetchGetLocalFile() {
  const fetchLocalFile = (path: string) => {
    // 使用fetch API加载图片文件
    fetch(path)
      .then(function (response) {
        return response.blob() // 获取图片文件的二进制数据
      })
      .then(function (blob) {
        // 获取文件名
        let temp: any = path?.split('/')
        let name = temp[temp?.length - 1]
        // 创建File对象
        let file = new File([blob], name, { type: blob.type })
        console.log('通过fetch读取的本地文件', file)
      })
      .catch(function (error) {
        console.log('加载文件失败:', error)
      })
  }
  return (
    <div>
      <h1 className="h1-color">js通过相对路径获取文件</h1>
      <button onClick={() => fetchLocalFile('/src/components/fetch-get-local-file/luffy.png')}>获取文件</button>
    </div>
  )
}

export default FetchGetLocalFile

结果

2. File

File() 构造器创建新的 File 对象实例(文件对象)

语法

const myFile = new File(bits, name[, options]);

参数

每个File类型对象都有有些只读属性

File接口基于Blob,稍后将介绍Blob

File 接口没有定义任何方法,但是它从 Blob 接口继承了以下方法:

3. Blob

binary large object:二进制大对象

Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

Blob 表示的不一定是 JavaScript 原生格式的数据。File 接口基于 Blob,继承了 Blob 的功能并将其扩展以支持用户系统上的文件。

打印出的Blob对象:详细说明

部分读取使用Blob.slice([start[, end[, contentType]]])

4. fetch

Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。

用法

fetch()接受一个 URL 字符串作为参数,默认向该网址发出 GET 请求,返回一个 Promise 对象。

基本示例

fetch(url)
    .then((response)=>{})
    .catch((err)=>{})

fetch()接收到的response是一个 Stream 对象,因此只能被读取一次,更多用法见Fetch API

总结

到此这篇关于js获得相对路径文件并上传到服务器的文章就介绍到这了,更多相关js获得相对路径文件并上传内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文