HTML
<form enctype="multipart/form-data" method="post" action="addCompany">
<fieldset>
<legend>Add Company</legend>
<br/>
<label>Company Name:</label>
<input name="name" size="30" type="text"/>
<br/>
<label>Company Logo:</label>
<input name="file" size="30" type="file"/>
<br/>
<span id="updateError" class="errorMessage"></span>
<button type="submit" class="jUiButton">Submit</button>
</fieldset>
</form>
<script>$(".jUiButton").button()</script>
Java Servlet
// 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) {}
}
}
我在这里得到一个null异常(在最后一个if语句中):
File uploadedFile = new File(directoryName + cvFile.getName());
答案 0 :(得分:1)
你的代码有问题(我甚至不是Java人)。
FileItem cvFile = null;
你在这里将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的第一个分支取(item.isFormField()
),cvFile
保持为空(其值永远不会从初始化的位置改变)。
File uploadedFile = new File(directoryName + cvFile.getName());
您在此处使用cvFile.getName()
,但cvFile
可能仍为空。
答案 1 :(得分:0)
你在哪里通过setName或其他方式将cvFile.name设置为某个东西?我想你的名字是空的。我没有看到它设置在项目上。我认为看到cvFile被分配给一个对象,但你尝试通过getName访问的名称对象是null。