Java Can';你不知道文件名吗?总是空的
HTML 我在这里得到一个null异常(在最后一个if语句中):Java Can';你不知道文件名吗?总是空的,java,html,Java,Html,HTML 我在这里得到一个null异常(在最后一个if语句中): 您的代码有问题(我甚至不是Java爱好者) 您在此处将cvFile设置为null FileItem cvFile = null; 如果If的第一个分支是take(item.isFormField()),则cvFile将保持空值(其值从初始化时起从未更改) 您在此处使用了cvFile.getName(),但是cvFile可能仍然为空。您在哪里通过setName或其他方式将cvFile.name设置为某物?我想你的名字是空的。我看不
您的代码有问题(我甚至不是Java爱好者) 您在此处将cvFile设置为null
FileItem cvFile = null;
如果If的第一个分支是take(item.isFormField()
),则cvFile
将保持空值(其值从初始化时起从未更改)
您在此处使用了
cvFile.getName()
,但是cvFile
可能仍然为空。您在哪里通过setName或其他方式将cvFile.name设置为某物?我想你的名字是空的。我看不出它是在项目上设置的。我认为see cvFile被分配给了一个对象,但是您尝试通过getName访问的对象名为null。我认为最初也是这样。但是在可疑的NPE行附近,他有一个if(name!=null&&cvFile!=null)
,这将使cvFile
显然不是该语句中的null对象。然而,我真的不知道该语句中还有什么是空的。我想知道这段代码是否真的是NPE发生时执行的代码。没有区别。我把FileItem放在布尔值之前,结果是一样的。@Rob Huska,你说得对。我错过了下一步的零分测试。但是我看不到它可能在其他任何地方,并且所讨论的行访问directoryname
和cvFile.getName()
;在这一点上,AFAICS,cvFile
是唯一可以为null并导致异常的东西。无论如何,不要吃那些exception
s。至少将堆栈跟踪写入日志或stdout。还值得注意的是,新文件(path)在路径为null的情况下抛出NullPointerException。
// Check that we have a file upload request
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart && request.getContentType() != null)
{
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = null;
try
{
items = upload.parseRequest(request);
}
catch(FileUploadException e) {}
// Process the uploaded items
Iterator iter = items.iterator();
FileItem cvFile = null;
while(iter.hasNext())
{
FileItem item = (FileItem)iter.next();
if(item.isFormField())
{
if(item.getFieldName().equals("name"))
name = item.getString();
}
else
{
cvFile = item;
}
if(name != null && cvFile != null)
{
directoryName = request.getRealPath("/") + "/Uploads/Companies/" + name + "/";
File theDir = new File(directoryName);
if (!theDir.exists())
theDir.mkdir();
File uploadedFile = new File(directoryName + cvFile.getName());
try
{
cvFile.write(uploadedFile);
}
catch(Exception e) {}
}
}
File uploadedFile = new File(directoryName + cvFile.getName());
FileItem cvFile = null;
while(iter.hasNext())
{
FileItem item = (FileItem)iter.next();
if(item.isFormField())
{
if(item.getFieldName().equals("name"))
name = item.getString();
}
else
{
cvFile = item;
}
File uploadedFile = new File(directoryName + cvFile.getName());