文件上传EXCEL怎么直接存储到数据库里
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传EXCEL怎么直接存储到数据库里相关的知识,希望对你有一定的参考价值。
明白啥指定json我建议:1、STRUTS文件标签选择并传EXCEL文件示例代码:
请选择Excel文件(.):
Excel文件标题(表)占行:
2、UploadExcelFileAction接收、写入台指定目录(局部代码)
FileOutputStream fos = null;
try
//文件数据(数组)
byte[] fileDate = ff.getFileData();
//服务器硬盘文件夹绝路径
ServletContext application = this.getServlet().getServletContext();
String realPath = application.getRealPath("/");
if(excelType==null||excelType.equals("xlsx"))//默认2007版本格式
fos = new FileOutputStream(realPath+"aircraftExcelTable.xlsx");
else
fos = new FileOutputStream(realPath+"aircraftExcelTable.xls");
fos.write(fileDate);
fos.close();
if(excelType==null||excelType.equals("xlsx"))//默认2007版本格式
num=ReadExcelSaveToDB.ReadAndSaveNew(realPath+"aircraftExcelTable.xlsx",topicNumber);
else
num=ReadExcelSaveToDB.ReadAndSave(realPath+"aircraftExcelTable.xls",topicNumber);
if(num==-1)
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "文件传输失败或连接数据库");
return mapping.findForward("promptpage");
else if(num==-2)
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "Excel文件于1000条或能识别重新制作Excel文件");
return mapping.findForward("promptpage");
else if(num==-3)
session.setAttribute("forwardPage", currentPage);
session.setAttribute("prompt", "Excel文件包含非字符(非数字)请修重试");
return mapping.findForward("promptpage");
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
finally
try
fos.close();
catch (IOException e)
e.printStackTrace();
3、解析读取表数据(POI)并存入数据库(局部代码)
public static int ReadAndSave(String path,String topicNumber)
try
File file=new File(path);
FileInputStream fs=new FileInputStream(file);
@SuppressWarnings("resource")
HSSFWorkbook workbook=new HSSFWorkbook(fs);
//共几张表
int sheet_num=workbook.getNumberOfSheets();
setSheetNumber(0);
setProcess(0);//始
//循环每表
for(int i=0;i<sheet_num;i++)
HSSFSheet sheet=workbook.getSheetAt(i);
setSheetNumber(i+1);
if(sheet!=null&&sheet.getPhysicalNumberOfRows()!=0)
int topicNumberNum=Integer.parseInt(topicNumber);//越首行标题()
totalNumber=sheet.getPhysicalNumberOfRows()-topicNumberNum;
//循环各行
for(int j=sheet.getFirstRowNum()+topicNumberNum;j<=sheet.getPhysicalNumberOfRows();j++)
HSSFRow row=sheet.getRow(j);
String aircraft=null;
//String aircraftType=null;
Double takeoffWeight=0.00;
Double payloadMax2=0.00;
int seatNumberMax2=0;
if(row!=null&&row.getPhysicalNumberOfCells()!=0)
switch(row.getCell(0).getCellType())
case Cell.CELL_TYPE_STRING:
aircraft=(row.getCell(0).getStringCellValue()).trim();
break;
case Cell.CELL_TYPE_NUMERIC:
aircraft=String.valueOf(row.getCell(0).getNumericCellValue()).trim();
break;
//继续处理其单元格、行
}
//存入数据库
AircraftTableActionForm atb=new AircraftTableActionForm();
if(aircraft!=null&&!aircraft.equals(""))
atb.setAircraft(aircraft);
//set其值
updateByExcel(atb)!=-1
} 参考技术A 要用到vba代码,上excelhome去找吧。
直接从前端将数据上传到 Azure Blob 存储时的安全问题
【中文标题】直接从前端将数据上传到 Azure Blob 存储时的安全问题【英文标题】:Security concerns when uploading data to Azure Blob Storage directly from frontend 【发布时间】:2021-10-30 14:48:09 【问题描述】:我正在做一个项目,我们必须在 Azure Blob 存储上存储一些音频/视频文件,上传文件后,我们需要根据文件的长度(以分钟为单位)计算一些价格。我们有一个 Angular 前端,其想法是直接从前端上传文件,从 Azure 获取带有文件 stats 的响应,然后调用后端 API 将该数据放入数据库中。
我想知道的是,在从 Azure 取回文件数据和调用我们的后端 API 之间,操作数据的可能性有多大。在将长度发送到我们的 API 之前,是否有可能修改长度?
【问题讨论】:
您打算如何在文件上传时从 Azure 获取回调?另外,我假设 blob 将作为块 blob 上传。对吗? 是块 blob。公平地说,我在 Azure 方面的经验有限,我假设它类似于 S3 处理上传的方式。回调是指 JavaScript 回调或承诺,因此基本上是上传完成后的异步响应。 我们的想法是首先使用 webhook 将数据从 Azure 直接传递到我们的后端 API,然后可能会触发一个套接字以将数据返回到前端,或者只是让 webhook 一起发生来自 Azure 的正常 HTTP 响应。但对于一些甚至可能不是问题的事情,这似乎是一个过度设计的解决方案。 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:一种可能的解决方案是使用 Azure Event Grid
与 Blob 集成。每当上传 Blob 时,都会自动引发一个事件,您可以在 Azure 函数中使用该事件并将数据保存在数据库中。
用户可能会重新上传不同大小的相同文件。如果发生这种情况,您将获得另一个事件(除了首次创建 blob 时的原始事件)。如何处理更新完全取决于您。
【讨论】:
Azure 事件网格中的事件类似于 webhook 对吗?重新上传实际上不是我们考虑过的问题。更关心的是上传一个 10 分钟的文件,但发送它只有 5 分钟。我认为这个解决方案可行。Events in Azure Event Grid are similar to webhooks am I correct?
- 有点,是的。 The concern is more about uploading a 10 minute file but sending that its only 5 minutes long.
- 这更像是一个应用程序问题,即您如何验证用户上传的文件。以上是关于文件上传EXCEL怎么直接存储到数据库里的主要内容,如果未能解决你的问题,请参考以下文章
如何用ABAP代码实现上传本地excel文件,并将其作为附件发邮件
使用thinkphp做一个上传图片,并且要将图片直接保存到数据库里。感觉现在好没有头绪,不知道如何下手。