-1

jsp で画像ファイルをアップロードしようとしているので、パス c:\ を指定したローカル Windows マシンは正常に動作していますが、Cpanel ベースのホスティングである Web ホスティング共有サーバーでは、Access Denide Message と erorr もその下に記載されています。私がアップロードしている画像には許可があります-ホスティングサーバーで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();

HERE私はコードについても言及しています

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見てください。FileNotFoundException「ファイルを作成できない場合」に a がスローされると述べています。

確かに、アクセス許可の問題があります。pasasinディレクトリの所有者は であり、ファイルを書き込むプロセスはapache/であると推測されますtomcat。あなたは要点を理解します:あなたではありません!試してみてchmod 777 /home/pasasin/public_html、それが機能するかどうかを確認してください。

モード 755 は、ディレクトリの読み取りのみが可能であることgroupを意味しますother。そのため、所有者と同じ uid でサーベット コンテナが実行されていない限り、./public_htmlそのディレクトリに書き込むことはできません。

乾杯、

于 2013-01-02T14:06:46.350 に答える
0

その明確な兆候は、アップロードしようとしているファイルに対して権限がないことです。サービスプロバイダーからのアクセス権を確認してください。

于 2013-01-02T14:06:56.787 に答える