-1

我正在尝试在 jsp 中上传图像文件,因此其具有路径 c:\ 的本地 Windows 机器工作正常,但在我的基于 Cpanel 的托管的网络托管共享服务器中,为我提供了访问拒绝消息和错误,下面也提到了它和目录我上传的图片有权限 - 托管服务器上的 755

Erorr occured in uploading. java.io.FileNotFoundException: /home/pasasin/public_html/e6f618f06876640c3de368bcba6f2053c.jpg (Permission denied) 

而且 e.stacktrace 是

type Exception report

message

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

exception

org.apache.jasper.JasperException: Exception in JSP: /upload.jsp:31

28: int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
29: saveFile="/home/pasasin/public_html/"+saveFile;
30: File ff = new File(saveFile);
31: FileOutputStream fileOut = new FileOutputStream(ff);
32: fileOut.write(dataBytes, startPos, (endPos - startPos));
33: fileOut.flush();
34: fileOut.close();

这里我也提到了代码

page.jsp

<HTML>
<HEAD><TITLE>Display file upload form to the user</TITLE></HEAD> 
<BODY> <FORM ENCTYPE="multipart/form-data" ACTION="upload.jsp" METHOD=POST>
<br><br><br>
<center>
<table border="0" bgcolor=#ccFDDEE>
<tr><center><td colspan="2" align="center"><B>UPLOAD THE FILE</B><center></td></tr>
<tr><td colspan="2" align="center"> </td></tr>
<tr><td><b>Choose the file To Upload:</b></td><td><INPUT NAME="file" TYPE="file">    </td></tr>
<tr><td colspan="2" align="center"> </td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Send File"> </td></tr>
<table>
</center> 
</FORM>
</BODY>
</HTML>

upload.jsp

<%@ page import="java.io.*,java.sql.*" %>
<%
String saveFile="";
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);
saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
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;
saveFile="/home/pasasin/public_html/"+saveFile;
File ff = new File(saveFile);
FileOutputStream fileOut = new FileOutputStream(ff);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
%><Br><table border="2"><tr><td><b>You have successfully upload the file by the name     of:</b>
<% out.println(saveFile);%></td></tr></table>
<%

Connection connection = null;
String connectionURL = "jdbc:mysql://localhost:3306/test";
ResultSet rs = null;
PreparedStatement psmnt = null;
FileInputStream fis;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
File f = new File(saveFile);
psmnt = connection.prepareStatement("insert into file(file_data) values(?)");
fis = new FileInputStream(f);
psmnt.setBinaryStream(1, (InputStream)fis, (int)(f.length()));
int s = psmnt.executeUpdate();
if(s>0) {
System.out.println("Uploaded successfully !");
}
else{
System.out.println("unsucessfull to upload file.");
}
}
catch(Exception e){e.printStackTrace();}
}
%>

我从这个链接引用的这段代码

please some buddy help ....i have to upload image file one or more may be in jsp but what problem is on web hosting server is mentioned

or if other way is possible so i will refer that...

Thank you...
4

2 回答 2

2

查看JavaDoc 的FileOutputStream. 它声明 aFileNotFoundException被抛出“如果文件......无法创建”。

你肯定有权限问题。猜测是目录的所有者是pasasin,而写入文件的进程是apache/tomcat或其他。你明白了:不是你!试试看chmod 777 /home/pasasin/public_html它是否有效。

755 模式意味着只能读取目录,因此除非 serlvet 容器在与您的所有者相同的 uid 下运行,否则group将无法写入该目录。other./public_html

干杯,

于 2013-01-02T14:06:46.350 回答
0

它的明确指示是您尝试上传的文件,您没有权限。请从服务提供商处检查您的访问权限。

于 2013-01-02T14:06:56.787 回答