html input传文件夹并解析内容

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>3D编辑器</title>
</head>
<body>
导入本地文件:<input type="file" name="file" id="importFile" webkitdirectory />
导出本地文件:<input type="button" value="导出" id="exportFile"/>
<script src="${ctx}/static/js/FileSaver.js"></script>

<script>
	
	var temp;
	var paths = {			
			"m":[],
			"mat":[],
			"sky":{},
			"ao":'',
			"a":[]
			
	};
	var input = document.getElementById("importFile");

	input.onchange=function(){
		//console.log(this.files);
		var fileList = this.files;
		uploadMulFile(fileList);
		/**var file = this.files[0];
		if(file){//单个文件的读取
			var reader = new FileReader();
			reader.readAsText(file,"UTF-8");
			reader.onload=function(){
			temp = this.result;	
			console.log(temp);
			var jsonData = JSON.parse(temp);
			console.log(jsonData);
			}
		}**/
	}
//多个文件一个一个读
	function uploadMulFile(uploadFile) {
	    var fileLength = 0;
	    var reader = new FileReader();
	    if ( uploadFile[fileLength].type.match( 'image.*' ) ) {	                    
            reader.readAsDataURL(uploadFile[fileLength]);
        } else {
     		  	reader.readAsText(uploadFile[fileLength],"UTF-8");
        }
		//reader.readAsText(uploadFile[fileLength],"UTF-8");
	    reader.onabort = function(e) {
	         console.log("文件读取异常" + uploadFile[fileLength].name);
	    };
	    reader.onerror = function(e) {
	         console.log("文件读取出现错误" + uploadFile[fileLength].name);
	    };
	     reader.onload = function(e) {
	        if(e.target.result) {
	            console.log("完成" + uploadFile[fileLength].name+"  路径为:"+uploadFile[fileLength].webkitRelativePath);
	           // console.log(e.target.result);//这是结果
	           
	           fileLength++;
	             if(fileLength < uploadFile.length) {
	            	 if ( uploadFile[fileLength].type.match( 'image.*' ) ) {	                    
	                     reader.readAsDataURL(uploadFile[fileLength]);//读图片
	                 } else {
	   	       		  	reader.readAsText(uploadFile[fileLength],"UTF-8");//读文本
	                 }
	           } else {
	            	//do something
		            console.log('本地文件已经全部读取完毕'+typeof(paths));
	            	console.log(JSON.stringify(paths));
		           // console.log(JSON.parse(paths));
	             }
	        }
	     };
	 }  
//导出为json文件
	var button = document.getElementById("exportFile");
	 button.addEventListener("click", saveHandler, false);
	 function saveHandler(){
	      let data = {
	          name:"hanmeimei",
	          age:88
	      }
	      var content = JSON.stringify(data);
	      var blob = new Blob([content], {type: "text/plain;charset=utf-8"});
	      saveAs(blob, "save.json");
	 }
	 
	
</script>
</body>
</html>

附上FileSave.js

链接: https://pan.baidu.com/s/1Tw1ZkBbLNq6O_H7trXNwlQ 提取码: peww 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的实现方法: 1. 在 HTML 页面上添加一个文件选择框和一个按钮,用于触发上事件: ```html <input type="file" id="fileInput"> <button onclick="upload()">上</button> ``` 2. 在 JavaScript 中定义上函数 `upload()`,获取用户选择的文件,并创建一个 FormData 对象,将文件添加到 FormData 中,同时添加一个自定义参数 `folder`,用于指定上到服务器的哪个文件夹: ```javascript function upload() { // 获取文件选择框中的文件 const fileInput = document.getElementById('fileInput'); const file = fileInput.files[0]; // 创建 FormData 对象 const formData = new FormData(); // 添加文件到 FormData 中 formData.append('file', file); // 添加自定义参数到 FormData 中 formData.append('folder', 'uploads'); // 发送 POST 请求 const xhr = new XMLHttpRequest(); xhr.open('POST', '/upload'); xhr.send(formData); } ``` 3. 在服务器端接收到 POST 请求后,解析 FormData 中的文件和自定义参数,将文件保存到指定的文件夹中。这里以 Node.js 为例: ```javascript const express = require('express'); const app = express(); const multer = require('multer'); const path = require('path'); // 设置文件的目录 const storage = multer.diskStorage({ destination: function (req, file, cb) { const folder = req.body.folder || 'uploads'; cb(null, folder); }, filename: function (req, file, cb) { cb(null, Date.now() + path.extname(file.originalname)); } }); const upload = multer({ storage: storage }); // 处理文件的 POST 请求 app.post('/upload', upload.single('file'), (req, res) => { res.send('上成功'); }); ``` 4. 在上成功后,将上图片在前端页面中显示出来。这里使用 FileReader API 将图片文件读取为 Base64 编码,然后将 Base64 编码的字符串作为图片的 `src` 属性值,显示在页面中: ```javascript function upload() { // 获取文件选择框中的文件 const fileInput = document.getElementById('fileInput'); const file = fileInput.files[0]; // 创建 FormData 对象 const formData = new FormData(); // 添加文件到 FormData 中 formData.append('file', file); // 添加自定义参数到 FormData 中 formData.append('folder', 'uploads'); // 发送 POST 请求 const xhr = new XMLHttpRequest(); xhr.open('POST', '/upload'); xhr.onload = function () { // 上成功后,将图片显示出来 const reader = new FileReader(); reader.onload = function () { const img = document.createElement('img'); img.src = reader.result; document.body.appendChild(img); }; reader.readAsDataURL(file); }; xhr.send(formData); } ``` 以上就是一个简单的上图片并显示的实现方法。需要注意的是,上图片的过程中,需要对图片进行一些验证和处理,比如检查图片类型、大小、防止上恶意脚本等。此外,服务器应该设置好文件夹的权限,避免上到不该上文件夹中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值