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]);
    
    • 参数

      • bits

        一个包含ArrayBufferArrayBufferViewBlob,或者 DOMString 对象的 Array — 或者任何这些对象的组合。这是 UTF-8 编码的文件内容。

      • name

        表示文件名称,或者文件路径。

      • options 可选

        选项对象,包含文件的可选属性。可用的选项如下:

        • type: 表示将要放到文件中的内容的 MIME 类型。默认值为 ""
        • lastModified: 数值,表示文件最后修改时间的 Unix 时间戳(毫秒)。默认值为 Date.now()
  • 每个File类型对象都有有些只读属性

    • name:本地系统中的文件名
    • size:以字节计的文件大小
    • type:包含文件MIME类型的字符串
    • lastModifiedDate:表示文件的最后修改时间
  • File接口基于Blob,稍后将介绍Blob

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

    • Blob.slice
      • Blob.slice([start[, end[, contentType]]])
    • 返回一个新的 Blob 对象,它包含有源 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

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FckEditor V2.6 fckconfig.js中文注释 1. FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称 2. FCKConfigFCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件 3. FCKConfig.EditorAreaStyles = '' ; // 编辑区的样式表风格 4. FCKConfig.ToolbarComboPreviewCSS =''; //工具栏预览CSS 5. FCKConfig.DocType = '' ;//文档类型 6. FCKConfig.BaseHref = ''; // 相对链接的基地址 7. FCKConfig.FullPage = false ; //是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容 8. FCKConfig.StartupShowBlocks = false ;//决定是否启用"显示模块" 9. FCKConfig.Debug = false ;//是否开启调试功能 10. FCKConfigFCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/' ; //皮肤路径 11. FCKConfig.PreloadImages=... //预装入的图片 12. FCKConfigFCKConfig.PluginsPath = FCKConfig.BasePath + 'plugins/' ; //插件路径 13. FCKConfig.AutoDetectLanguage = true ; //是否自动检测语言 14. FCKConfig.DefaultLanguage = 'zh-cn' ; //默认语言 15. FCKConfig.ContentLangDirection = 'ltr' ; //默认的文字方向,可选"ltr/rtl",即从左到右或从右到左 16. FCKConfig.ProcessHTMLEntities = true ; //处理HTML实体 17. FCKConfig.IncludeLatinEntities = true ; //包括拉丁文 18. FCKConfig.IncludeGreekEntities = true ;//包括希腊文 19. FCKConfig.ProcessNumericEntities = false ;//处理数字实体 20. FCKConfig.AdditionalNumericEntities = '' ; //附加的数字实体 21. FCKConfig.FillEmptyBlocks = true ; //是否填充空块 22. FCKConfig.FormatSource = true ; //在切换到代码视图时是否自动格式化代码 23. FCKConfig.FormatOutput = true ; //当输出内容时是否自动格式化代码 24. FCKConfig.FormatIndentator = ' ' ; //当在源码格式下缩进代码使用的字符 25. FCKConfig.StartupFocus = false ; //开启时焦点是否到编辑器,即打开页面时光标是否停留在fckeditor上 26. FCKConfig.ForcePasteAsPlainText = false ; //是否强制粘贴为纯文件内容 27. FCKConfig.AutoDetectPasteFromWord = true ; //是否自动探测从word粘贴文件,仅支持IE 28. FCKConfig.ShowDropDialog = true ;//是否显示下拉菜单 29. FCKConfig.ForceSimpleAmpersand = false ;//是否不把&符号转换为XML实体 30. FCKConfig.TabSpaces = 0 ;//按下Tab键时光标跳格数,默认值为零为不跳格 31. FCKConfig.ShowBorders = true ;//合并边框 32. FCKConfig.SourcePopup = false ;//弹出 33. FCKConfig.ToolbarStartExpanded = true ;//启动fckeditor工具栏默认是否展开 34. FCKConfig.ToolbarCanCollapse = true ;//是否允许折叠或展开工具栏 35. FCKConfig.IgnoreEmptyParagraphValue = true ;//是否忽略空的段落值 36. FCKConfig.FloatingPanelsZIndex = 10000 ;//浮动面板索引 37. FCKConfig.HtmlEncodeOutput = false ;//是否将HTML编码输出 38. FCKConfig.TemplateReplaceAll = true ;//是否替换所有模板 39. FCKConfig.ToolbarLocation = 'In' ;//工具栏位置, 40. FCKConfig.CustomConfigurationsPath = '' ; // 自定义配置文件路径和名称 41. FCKConfigFCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css'; // 编辑区的样式表文件 42. FCKConfig.BaseHref = ''; // 相对链接的基地址 43. FCKConfig.Debug = true/false; // 是否开启调试功能,当调用FCKDebug.Output()时,会在调试窗中输出内容 44. FCKConfigFCKConfig.SkinPath = FCKConfig.BasePath + 'skins/default/'; // 设置皮肤 45. FCKConfig.AutoDetectLanguage = true/false ; // 是否自动检测语言 46. FCKConfig.DefaultLanguage = 'zh-cn' ; // 设置默认语言 47. FCKConfig.ContentLangDirection = 'ltr/rtr'; // 默认文字方向,ltr左,rtr右 48. FCKConfig.FillEmptyBlocks = true/false ; // 使用这个功能,可以将空的块级元素用空格来替代 49. FCKConfig.FormatSource = true/false; // 切换到代码视图时,是否自动格式化代码 50. FCKConfig.FormatOutput = true/false; // 当输出内容时是否自动格式化代码 51. FCKConfig.FormatIndentator = ""; // 当在“源码格式”下缩进代码使用的字符 52. FCKConfig.GeckoUseSPAN = true/false; // 是否允许SPAN标记代替B,I,U标记 53. FCKConfig.StartupFocus = true/false; // 开启时是否FOCUS到编辑器 54. FCKConfig.ForcePasteAsPlainText = true/false;// 强制粘贴为纯文本 55. FCKConfig.ForceSimpleAmpersand = true/false; // 是否不把&符号转换为XML实体 56. FCKConfig.TabSpaces = 0/1; // TAB是否有效 57. FCKConfig.TabSpaces = 4; // TAB键产生的空格字符数 58. FCKConfig.ShowBorders = true/false; // 是否合并边框 59. FCKConfig.ToolbarStartExpanded = true/false; // 页面载入时,工具栏是否展开,点“展开工具栏”时才出现 60. FCKConfig.ToolBarCanCollapse = true/false; // 是否允许展开折叠工具栏 61. FCKConfig.ToolbarSets = object ; // 编辑器的工具栏,可以自行定义,删减,可参考已存在工具栏 62. FCKConfig.EnterMode = 'p'; // 编辑器中直接回车,在代码中生成,可选为p | div | br 63. FCKConfig.ShiftEnterMode = 'br'; // 编辑器中Shift+回车,在代码中生成,可选为p | div | br 64. FCKConfig.ContextMenu = 字符串数组; // 右键菜单的内容 65. FCKConfig.FontColors = ""; // 文字颜色列表 66. FCKConfig.FontNames = ""; // 字体列表 67. FCKConfig.FontSizes = ""; // 字号列表 68. FCKConfig.FontFormats = ""; // 文字格式列表 69. FCKConfig.StylesXmlPath = ""; // CSS样式列表的XML文件的位置 70. FCKConfig.TemplatesXmlPath = ""; // 模版的XML文件位置 71. FCKConfig.SpellChecker = "ieSpell/Spellerpages"; // 拼写检查器 72. FCKConfig.IeSpellDownloadUrl = ""; // 下载拼写检查器的网址 73. FCKConfigFCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/'; // 表情文件存放路径 74. FCKConfig.SmileyImages = ''; // 表情文件名称列表,具体参考默认设置 75. FCKConfig.SmileyColumns = 8; // 表情窗口显示表情列数 76. FCKConfig.SmileyWindowWidth = 320; // 表情窗口显示宽度,此窗口会因为表情文件的改变而作调整 77. FCKConfig.SmileyWindowHeight = 240; // 表情窗口显示高度,此窗口会因为表情文件的改变而作调整 78. FCKConfig.FullPage = true/false; // 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容 79. 80. 81. 上传设置 82. 83. var _FileBrowserLanguage = 'php' ; // asp | aspx | cfm | lasso | perl | php | py 84. var _QuickUploadLanguage = 'php' ; // asp | aspx | cfm | lasso | php[/code] 85. //第一个是文件浏览器使用的语言,第二个快速上传使用的语言,改成你需要的 86. FCKConfig.LinkUploadAllowedExtensions = "" ; // empty for all 87. FCKConfig.LinkUploadDeniedExtensions =".(php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi)$" 88. //这是两个允许和拒绝上传的文件类型列表 89. FCKConfig.ImageBrowser = false ;是否在插入图片功能里面启用服务器文件浏览功能 90. FCKConfigFCKConfig.ImageBrowserURL = FCKConfig.BasePath + 'filemanager/browser/default/browser.html?Type=ImageConnector=connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ; 91. Type=Image 表示文件类型是image这会使文件浏览器定位到文件上传路径/image/文件夹下面 92. FCKConfig.FlashBrowser = false ;是否在插入flash功能中启用服务器文件浏览功能 93. FCKConfig.LinkUpload = false ;是否启用插入链接的快速上传功能 94. FCKConfig.ImageUpload = false ;是否启用图片快速上传功能 95. FCKConfig.FlashUpload = false ;是否启用flash上传功能
第一步、将试题网程序上传到你的WEB空间; 第二步、用计事本打开根目录下的conn.asp文件修改数据库连接,ACCESS版请注意连接路径,请使用根相对路径填写数据库路径。 系统默认在站点根目录,如果你在子目录下面运行本程序,请在数据库连接名称前加上目录名称;\ndb='\\Database\\#newasp.mdb'改为\uff1adb='\\\u5b50\u76ee\u5f55\\Database\\#newasp.mdb'前面一定要加上“\”; 或者使用绝对路径\uff1adb='D:\\Inetpub\\wwwroot\\Database\\#newasp.mdb' 强烈建议修改默认数据库名称 第三步、在浏览器中直接输入地址访问下载系统主页(index.asp),如果不能正常显示请刷新页面,然后登陆后台/admin/admin_login.asp(默认站长名及密码:admin), 在后台点击左边管理导航菜单中的“常规设置”----“基本设置”,对你的网站信息和一些网站配置参数进行配置。 打开“模板总管理”重新保存“CSS样式表”,如果后台显示不正常,请在基本设置里面“重建缓存”; 第四步、您现在可以设置软件和文章的一级分类和N级分类的名称;添加管理软件及文章了。 注意:本系统所有数据均采用数据库存储,数剧库已经做好防下载处理, 如果你更改数了据库名,请打开conn.asp修改数据库连接,注意使用根相对路径和绝对路径。 本系统需要服务器支持FSO(FileSystemObject),如果你的空间不支持FSO,请联系你的空间商。 本程序修改自新云3.1,版权归新云所有,更详细用法可以参照新云说明  试题网是一套开源WEB的网站管理系统,采用网络中已经成熟、稳定地技术ASP+Access/SQL开发而成, 通过它,您可以很方便地管理自己网站。当前本系统已具有如下功能特点: 用户管理,多用户管理分权限发布、管理软件信息;用户短信、收藏功能,会员在线充值,支持网银和NPS在线支付。 下载模块,支持计点会员和包月会员下载,反点等功能,无限制添加下载服务器,可以对每个下载服务器路径设置用户下载权限、下载点数设置,添加软件只需要填写软件名称 文章、FLASH模块,会员浏览文章权限设置。 广告管理功能全部由系统生成JS文件管理,避免了修改广告代码后需要重新生成HTML文件; 强大的模板后台,可灵活自由的生成模板标签、JS自动生成,让您的站点版式自由改变。 强大的文章、软件采集功能,文章采集的同时可以选择是否下载图片到本地及分页采集。 其它模块,留言、友情连接自助申请,上传水印,内容关键字功能。 全站生成HTML页面;增加系统安全性,自由设置生成HTML文件扩展名和存放目录 完善的上传文件清理功能,为您清除垃圾文件; 后台登陆地址:/admin/admin_login.asp 默认管理员:admin密码:admin SP1更新说明 -------------------------- 增加站点代码广告 增加迅雷专用下载连接 更新在线支付功能 更新模板导入/导出功能 更新自定义标签导入/导出功能 更新发布文章和软件的审核功能 修补会员管理安全漏洞 增加系统安全性 修正已知BUG
Chevereto是一套基于PHP构建,易于安装和配置使用,无需MySQL数据库支持的开源在线图片存储分享服务系统。它支持本地上传和在线获取两种图像上传方式,并集成了TinyURL网址缩短服务 Chevereto图片上传程序源码是一款非常简洁的PHP图片上传程序,可以将本地电脑上或者是网络上的图片上传到服务器上。以前的Chevereto不需要MySQL数据库,现在需要了,不过这一改变只是为了提高图片的安全性。同时,集成了TinyURL的短地址服务,让使用者更加方便。 主要功能: 1.本地/远程两种图片上传方式; 2.后台文件管理系统; 3.调整图片大小; 4.社交网站分享按钮; 5.TinyURL短地址服务; 6.支持自定义主题模板; 7.多张图片同时上传; 8.缩略图功能; 9.以及一些基本的功能(例如图片大小、数量限制、水印等等)。 所需环境: Apache mod_rewrite 启用 PHP 5.2.0或者更高 MySQL php.ini 中 file_uploads 启用 GD Library 2或者更高 cURL BC Math 程序安装: 1.打开includes/config.php,参照“配置说明”完成设置; 2.打开includes/definitions.php,将changeme修改成其他任意内容; 3.上传目录下的文件; 4.访问程序所在地址,将会自动完成数据库的安装。 配置说明: config.php中的参数内容详细介绍。 theme:模板名称,一般不需要修改 lang:语言,如果需要显示中文请修改成zh-cn auto_lang:自动识别语言,启用为true,关闭为false site_name:网站名称 doctitle:副标题 meta_description:网站描述 meta_keywords:关键词 db_host:MySQL主机地址 db_port:MySQL端口 db_name:数据库名 db_user:数据库用户 db_pass:数据库密码 maintenance:维护模式,启用为true,关闭为false google_analytics_tracking_id:Google Analytics ID minify:CSS、JS优化模式,启用为true,关闭为false private_mode:隐私模式,需要输入密码才可上传图片,启用为true,关闭为false user_password:隐私模式密码 admin_folder:后台路径 admin_password:后台密码 api_key:API密钥 api_mode:API模式 storage:储存方式,datefolders:按日期分目录储存(如:/YYYY-MM-DD/file.jpg);direct:直接储存(如:/image/file.jpg) file_naming:图片命名,original:保持原名,如果重复则添加随机字符;random:图片名随机;mixed:在原名中添加随机字符 folder_images:图片储存目录 folder_thumbs:缩略图储存目录 virtual_folder_image:虚拟图片目录,即展示图片页的虚拟路径 virtual_folder_uploaded:多图片上传时显示上传进程的虚拟路径 max_filesize:最大大小 thumb_width:缩略图宽,单位:像素 thumb_height:缩略图高,单位:像素 min_resize_size:最小调整大小,单位:像素 max_resize_size:最大调整大小,单位:像素 multiupload:多图片上传,启用为true,关闭为false multiupload_limit:多图片上传最大张数 over_resize:扩大图片,即在调整图片的时候将小图片调整为大图片,启用为true,关闭为false flood_protection:洪水攻击保护,启用为true,关闭为false flood_report_email:洪水攻击报告邮箱,如果发生洪水攻击则向该邮箱发送邮件报告 max_uploads_per_minute:每分钟最多上传 max_uploads_per_hour:每小时最多上传 max_uploads_per_day:每天最多上传 max_uploads_per_week:每周最多上传 max_uploads_per_month:每月最多上传 error_reporting:DeBug模式,报告错误,启用为true,关闭为false short_url:短地址功能,启用为true,关闭为false short_url_service:短地址服务商,可用:tinyurl、google、isgd、bitly、custom(自定义) custom_short_url_api:自定义短地址服务商API地址 custom_short_url_service:自定义短地址服务商名称 short_url_user:短地址服务商用户名 short_url_keypass:短地址服务商密码 short_url_image:缩短图片类型 facebook_app_id:FaceBook应用ID facebook_comments:FaceBook评论应用 watermark_enable:水印功能,启用为true,关闭为false watermark_image:水印所在路径 watermark_position:水印位置,用英语方位名词描述 watermark_margin:水印位置,从图片底部算起 watermark_opacity:水印不透明度 root_dir:程序根路径 relative_dir:相对路径
在SpringMVC框架中上传文件并将相对路径存储到MySQL数据库可以按照以下步骤进行操作: 1. 在前端页面中添加文件上传功能,可以使用HTML的input标签或者第三方插件如Dropzone.js等。 2. 在后端Controller中添加处理文件上传的方法,可以使用@RequestParam注解获取上传的文件。 3. 在处理文件上传的方法中,将上传的文件保存到服务器本地的指定目录下,可以使用File类的API。 4. 将保存在服务器本地的文件相对路径(相对于Web应用根目录)存储到MySQL数据库中的指定表和字段中,可以使用Spring JDBC Template或者Mybatis等持久化框架。 以下是一个大概的示例代码: 前端HTML页面: ``` <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"/> <input type="submit" value="Upload"/> </form> ``` 后端Controller: ``` @Controller public class FileUploadController { @RequestMapping(value = "/upload", method = RequestMethod.POST) public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { // 保存上传的文件服务器本地目录下 String filePath = "/uploads/" + file.getOriginalFilename(); File dest = new File(filePath); file.transferTo(dest); // 将文件相对路径存储到MySQL数据库中 String sql = "INSERT INTO file_table (file_path) VALUES (?)"; jdbcTemplate.update(sql, filePath); return "upload_success"; } @Autowired private JdbcTemplate jdbcTemplate; } ``` 其中,`/uploads/`是服务器本地存储文件相对路径,`file_table`是MySQL数据库中的表名,`file_path`是存储文件相对路径的字段名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘎嘎油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值