Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 使用“浏览”按钮将excel文件上载到oracle数据库_Jsp_Servlets - Fatal编程技术网

Jsp 使用“浏览”按钮将excel文件上载到oracle数据库

Jsp 使用“浏览”按钮将excel文件上载到oracle数据库,jsp,servlets,Jsp,Servlets,我正在将excel文件上载到数据库中。当我不使用browse直接给出文件路径时,代码运行良好 但当我通过浏览按钮上传excel文件时,它会显示 filenotfoundexception:(access is denied) <%@page import="org.apache.poi.ss.usermodel.Cell"%> <%@page import="org.apache.poi.ss.usermodel.Row"%> <%@page language

我正在将excel文件上载到数据库中。当我不使用browse直接给出文件路径时,代码运行良好

但当我通过浏览按钮上传excel文件时,它会显示

filenotfoundexception:(access is denied)


<%@page import="org.apache.poi.ss.usermodel.Cell"%>
<%@page import="org.apache.poi.ss.usermodel.Row"%>
<%@page  language="java" import="java.sql.*"  contentType="text/html"  pageEncoding="UTF-8" %>
<%@ page import ="java.util.Date" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.io.FileNotFoundException" %>
<%@ page import ="java.io.IOException" %>
<%@ page import ="java.util.Iterator" %>
<%@ page import ="java.util.ArrayList" %>
<%@ page import ="org.apache.poi.hssf.usermodel.HSSFCell" %>
<%@ page import ="org.apache.poi.hssf.usermodel.HSSFRow" %><%@ page import ="org.apache.poi.hssf.usermodel.HSSFSheet" %>
<%@ page import ="org.apache.poi.hssf.usermodel.HSSFWorkbook" %>
<%@ page import ="org.apache.poi.poifs.filesystem.POIFSFileSystem" %>


<html>
<head>

<title>Excel File Uploading</title>
</head>
<body>

<jsp:useBean id="connection" class="pk1.DB_Connection" scope="application">
    <jsp:setProperty name="connection" property="*"/>
</jsp:useBean> 
<%!     
Connection con;
PreparedStatement ps=null;
public static ArrayList readExcelFile(String fileName)
{
    /** --Define a ArrayList
        --Holds ArrayList Of Cells
     */
    ArrayList cellArrayLisstHolder = new ArrayList();

    try{
    /** Creating Input Stream**/
        FileInputStream myInput = new FileInputStream(fileName);

    /** Create a POIFSFileSystem object**/
        POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);

    /** Create a workbook using the File System**/
        HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);

     /** Get the first sheet from workbook**/
        HSSFSheet mySheet = myWorkBook.getSheetAt(0);

    /** We now need something to iterate through the cells.**/
        Iterator rowIter = mySheet.rowIterator();
            while(rowIter.hasNext())
            {
                HSSFRow myRow = (HSSFRow) rowIter.next();

                 Iterator cellIter = myRow.cellIterator();
                ArrayList cellStoreArrayList=new ArrayList();
                while(cellIter.hasNext())
                {
                  HSSFCell myCell = (HSSFCell) cellIter.next();
                  cellStoreArrayList.add(myCell);
                }
                    cellArrayLisstHolder.add(cellStoreArrayList);

             }


    }
    catch (Exception e){e.printStackTrace(); }
    return cellArrayLisstHolder;
}
%>

<%

String contentType = request.getContentType();

if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0))

{

DataInputStream in = new DataInputStream(request.getInputStream());


int formDataLength = request.getContentLength();

byte dataBytes[] = new byte[formDataLength];

int byteRead = 0;

int totalBytesRead = 0;
while (totalBytesRead < formDataLength)

{

byteRead = in.read(dataBytes, totalBytesRead,formDataLength);

totalBytesRead += byteRead;
}
String file = new String(dataBytes);

String saveFile = file.substring(file.indexOf("filename=\"") + 10);

saveFile = saveFile.substring(0, saveFile.indexOf("\n"));

saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));

out.println(saveFile);

int lastIndex = contentType.lastIndexOf("=");

String boundary = contentType.substring(lastIndex + 1,contentType.length());

int pos;

pos = file.indexOf("filename=\"");

pos = file.indexOf("\n", pos) + 1;

pos = file.indexOf("\n", pos) + 1;

pos = file.indexOf("\n", pos) + 1;

int boundaryLocation = file.indexOf(boundary, pos) - 4;

int startPos = ((file.substring(0, pos)).getBytes()).length;

int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

FileOutputStream fileOut = new FileOutputStream(saveFile);

fileOut.write(dataBytes, startPos, (endPos - startPos));

fileOut.flush();

fileOut.close();


out.println(saveFile);
filenotfoundexception:(访问被拒绝)
Excel文件上传
= 0))
{
DataInputStream in=新的DataInputStream(request.getInputStream());
int formDataLength=request.getContentLength();
字节数据字节[]=新字节[formDataLength];
int byteRead=0;
int totalBytesRead=0;
while(totalBytesRead
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 以此类推

**Error:**
type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page /excel.jsp at line 129

126: 
127: int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
128: 
129: FileOutputStream fileOut = new FileOutputStream(saveFile);
130: 
131: fileOut.write(dataBytes, startPos, (endPos - startPos));
132: 


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:447)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


root cause 

java.io.FileNotFoundException: super.xls (Access is denied)
    java.io.FileOutputStream.open(Native Method)
    java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    java.io.FileOutputStream.<init>(FileOutputStream.java:70)
    org.apache.jsp.excel_jsp._jspService(excel_jsp.java:208)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:
**错误:**
类型异常报告
消息
说明服务器遇到内部错误(),无法完成此请求。
例外情况
org.apache.jasper.JasperException:在第129行处理JSP页面/excel.JSP时发生异常
126: 
127:int-endPos=((file.substring(0,boundaryLocation)).getBytes()).length;
128: 
129:FileOutputStream fileOut=新的FileOutputStream(保存文件);
130: 
131:fileOut.write(数据字节,startPos,(endPos-startPos));
132: 
堆栈跟踪:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:447)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
根本原因
java.io.FileNotFoundException:super.xls(访问被拒绝)
java.io.FileOutputStream.open(本机方法)
java.io.FileOutputStream。(FileOutputStream.java:179)
FileOutputStream.java.io.FileOutputStream。(FileOutputStream.java:70)
org.apache.jsp.excel\u jsp.\u jsp服务(excel\u jsp.java:208)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:

尝试提供默认目录以外的其他目录路径

差不多

String strUploadDir=“D:\\uploads\\”;\\n服务器上的有效目录

\\您已经在做的其他事情…..

FileOutputStream fileOut=newfileoutputstream(struploadder+saveFile);

我不知道它究竟在哪里写入文件默认位置,但这应该可以工作

另外,您应该使用Servlet来执行此操作,除了表示(视图)逻辑之外,使用JSP不是一个好的实践