我需要在我的服务器上存储cad
个文件,但我无法让上传工作。我试着让这个工作几个小时,但我不能。我有这个。
这给了我一个错误
随机数 .temp不存在( java.io.FileNotFoundException: /home/nick/.netbeans/7.1.2/config/GF3_1/domain1/generated/jsp/lrt/upload_700679fb_13a96c78523__7ffb_00000006.tmp (No such file or directory )
package Admin;
import java.io.IOexception;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Collection;
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;
@WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"})
@MultipartConfig
public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse responst) throws ServletException, IOException {
Collection<Part> parts = request.getParts();
if (parts.size() != 3) {
//can write error page saying all details are not entered
}
Part filePart = request.getPart("cad");
InputStream sInputStream = filePart.getInputStream();
//read imageInputStream
filePart.write(filePart.getName());
//Read Name, String Type
Part namePart = request.getPart("cad");
if(namePart.getSize() > 20){
//write name cannot exceed 20 chars
}
//use nameInputStream if required
InputStream nameInputStream = namePart.getInputStream();
//name , String type can also obtained using Request parameter
String nameParameter = request.getParameter("name");
//Similarly can read age properties
Part agePart = request.getPart("age");
int ageParameter = Integer.parseInt(request.getParameter("age"));
}
@Override
public String getServletInfo() {
return "Short description";
}
}
答案 0 :(得分:2)
找不到代表上传文件的临时文件。
路径表明它存储在Netbeans项目文件夹中的Glassfish工作文件夹中。也许在Netbeans内部有一些激进的清理/热部署,临时文件过早被扫描?或者也许只有不充分的写权利?这取决于抛出异常的方式和位置的背景 - 从你的问题中不清楚。
首先,我建议告诉@MultipartConfig
将临时文件存储在一个不同的,更永久和可写的location中。例如,
@MultipartConfig(location="/var/webapp/temp")