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) {}
}
}我在这里得到一个空异常(在最后一条if语句中):
File uploadedFile = new File(directoryName + cvFile.getName());发布于 2011-03-14 03:52:37
您的代码有问题(我甚至不是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的第一个分支是take (item.isFormField()),则cvFile保持为null (它的值永远不会从初始化的位置更改)。
File uploadedFile = new File(directoryName + cvFile.getName());您在这里使用了cvFile.getName(),但cvFile可能仍然为空。
发布于 2011-03-14 04:23:48
您在哪里通过setName或其他方式将cvFile.name设置为某个值?我想你的名字是空的。我没有看到它设置在项目上。我认为cvFile被赋给了一个对象,但是您尝试通过getName访问的name对象是空的。
https://stackoverflow.com/questions/5291791
复制相似问题