HTTPステータス500 - java.io.FileNotFoundException: イメージを保存中にC:\ sam \ IMAGES(アクセスが拒否されました)ファイルのIMAGES.Iでファイルの許可を変更するようなものを試し、違うフォルダに保存しようとしました。奇妙なことは、私の画像が実際に上記のファイルに保存されているということです。そのエラーを示す??このエラーを解決する方法は?Tomcatはユーザーの所有者です。java.io.FileNotFoundException(アクセスが拒否されました)エラー?ファイルが保存されています
My Code:
MySampleUpload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="FileUploadServlet" method="post"enctype="multipart/form-data">
<div class="btn btn-success btn-file">
<i class="fa fa-cloud-upload"></i>
Browse
<input type="file" name="file" />
</div>
<button type="submit" value="submit" name='submit'>submit</button>`
</form>
</body>
</html>
FileUploadServlet.java
import java.io.File;
import java.io.IOException;
import javax.imageio.stream.FileImageOutputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.RandomAccessFile;
/**
* Servlet implementation class FileUploadServlet
*/
@WebServlet("/FileUploadServlet")
@MultipartConfig(fileSizeThreshold=1024*1024*10, // 10 MB
maxFileSize=1024*1024*50, // 50 MB
maxRequestSize=1024*1024*100) // 100 MB
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
private static final String UPLOAD_DIR="IMAGES";
public FileUploadServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//gets absolute path of the web application
//String applicationPath=request.getServletContext().getRealPath("");
//construct path of the directory to save the uploaded file
String UploadFilePath="C:/sam"+File.separator+UPLOAD_DIR;
//creates the file directory if it doesn't exist
File FileSaveDir=new File(UploadFilePath);
if(!FileSaveDir.exists())
{
FileSaveDir.mkdirs();
}
System.out.println("Upload file Diiirectory"+FileSaveDir.getAbsolutePath());
String fileName=null;
//get all parts from request and write it to the file on the server
for(Part part:request.getParts())
{
fileName=getFileName(part);
part.write(UploadFilePath + File.separator + fileName);
}
System.out.println("File Uploaded successfully");
request.setAttribute("message",fileName+"file uploaded successfully");
getServletContext().getRequestDispatcher("/response.jsp").forward(request, response);
}
private String getFileName(Part part)
{
String ContentDisp=part.getHeader("Content-Disposition");
System.out.println("content-disposition-header"+ContentDisp);
String[] tokens = ContentDisp.split(";");
for (String token : tokens) {
if (token.trim().startsWith("filename")) {
return token.substring(token.indexOf("=") + 2, token.length()-1);
}
} return "";
}}
すべてのコードはありませんか? – Axel
おそらくいくつかのコード行を追加し、正確にどこにエラーが表示されているのかを示すだけでなく、どのユーザーがtomcatで実行されているのか、ディレクトリのアクセス許可は何ですか? – JChrist
デバッグを試しましたか? 1つのファイルをアップロードすると、リクエストには何個の部分がありますか?これらすべての部分に 'fileName'が含まれていますか? 'getFileName'が空の文字列を返すとどうなるでしょうか? – JChrist