-1

i am attempting to uploading image file in jsp so its local windows machine with giving path c:\ is working properly but in my web hosting shared server which is Cpanel based hosting giving me Access Denide Message and erorr also mentioned below it and the directory in which i am uploading image have permission - 755 on hosting server

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

and also e.stacktrace is

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();

HERE i am mentioning the code also

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();}
}
%>

this code i have reffered from this link

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...
Jonathan
  • 20,053
  • 6
  • 63
  • 70
sam
  • 73
  • 3
  • 10
  • It is clearly mentioning (Permission denied) error, it means you don't have access to that location, I think you need to check with your service provider to have a look into permissions for above directory – Pradeep Simha Jan 02 '13 at 14:02
  • actually i have discused it with provide so he replied me this---->Dear Sir, Please note that you need to upload the files under the public_html directory. It is not possible to access the folder outside the public_html directory.Kindly use the file path /home/pasasin/public_html and check at your end. Still if you have any clarifications update us. – sam Jan 02 '13 at 14:06
  • @Pradeep Simha i have many control panels for files so there i got option to change permission of folder and i have given 777 permission on that folder and result is ..........Upload Successfully....i'm glad....Thank You so much for your support ....lots of Thanks....!!! – sam Jan 02 '13 at 14:41

2 Answers2

2

Have a look at the JavaDoc for FileOutputStream. It states that a FileNotFoundException is thrown "if the file ... cannot be created".

You have a permissions problem, for sure. A guess would be that the owner of the directory is pasasin and the process that writes the file is apache/tomcat or whatever. You get the point: Not you! Try chmod 777 /home/pasasin/public_html and see if it works.

A mode of 755 means that group and other can only read the directory, so unless the serlvet container runs under the same uid as the owner of ./public_html you won't be able to write to that directory.

Cheers,

Anders R. Bystrup
  • 15,729
  • 10
  • 59
  • 55
  • i have recently replied to service provider now but before he replied me that---------------------Dear Sir, Please note that you need to upload the files under the public_html directory. It is not possible to access the folder outside the public_html directory.Kindly use the file path /home/pasasin/public_html and check at your end. Still if you have any clarifications update us. – sam Jan 02 '13 at 14:10
  • I read that comment on your original post. Re-read my post, @Manoj's post and the comments. Fix your permissions. – Anders R. Bystrup Jan 02 '13 at 14:13
  • i have many control panels for files so there i got option to change permission of folder and i have given 777 permission on that folder and result is ..........Upload Successfully....i'm glad....Thank You so much for your support ....lots of Thanks....!!! – sam Jan 02 '13 at 14:40
0

Its clear indication is that the file which you are trying to upload, you do not have permission on that. Please check your access rights from service providers.

Manoj Kathiriya
  • 3,366
  • 5
  • 19
  • 19
  • actually i have discused it with provide so he replied me this---->Dear Sir, Please note that you need to upload the files under the public_html directory. It is not possible to access the folder outside the public_html directory.Kindly use the file path /home/pasasin/public_html and check at your end. Still if you have any clarifications update us. – sam Jan 02 '13 at 14:07
  • i have many control panels for files so there i got option to change permission of folder and i have given 777 permission on that folder and result is ..........Upload Successfully....i'm glad....Thank You so much for your support ....lots of Thanks....!!! – sam Jan 02 '13 at 14:40