高手给改改错,谢谢! 文件上传远程服务器。
两台电脑(A 客户端,B 服务器)
我现在需要 在B服务器上运行程序, 在A客户端,通过jsp页面,点击上传excel文件,解析插入到B服务器的数据库中。
我把这段代码放到B服务器上运行,在A客户端页面 点击上传的时候,报错找不到文件。保存路径 那部分服务器的路径该怎么写?这段代码是不是有问题?不该这么写?
Java code
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建硬盘factory
FileItemFactory factory = new DiskFileItemFactory();
//工厂factory实例化上传组件
ServletFileUpload upload = new ServletFileUpload(factory);
//从REQUEST获取所有上传域的列表
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
System.out.println("获取文件失败..");
}
//遍历得到所有文件
Iterator iter = items.iterator();
while (iter.hasNext()) {
//if hasnext
FileItem item = (FileItem) iter.next();
if (item == null || item.isFormField()) {
String name = item.getFieldName();
String value = item.getString("GBK");
System.out.println(name + "=" + value);
} else {
//保存路径
String uploadPath = "\\home\\dev\\apache-tomcat-6.0.35\\excel.xls";
File uploadedFile = new File(uploadPath );
try {
//写入文件
item.write(uploadedFile);
} catch (Exception e) {
System.out.println("文件写入失败 ");
}
}
}
//解析并插入数据库
// List<Excel2003Bean> list = ino.InsertInto(upLoaderPath);
request.getRequestDispatcher("/app/fileUpload.jsp").forward(request,
response);
}
------解决方案--------------------你找一个servlet上传文件的代码,测试通过后你再做添加到数据库的操作。这种代码网上很多
------解决方案--------------------
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置内存缓冲区,超过后写入临时文件
factory.setSizeThreshold(10240000);
// 设置临时文件存储位置
String base = this.getServletContext().getRealPath("/")+"files";
System.out.println("--------base----------------->"+base);
File file = new File(base);
System.out.println(file.getName());
System.out.println("------------>"+file.exists());
if(!file.exists())
file.mkdirs();
factory.setRepository(file);
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置单个文件的最大上传值
upload.setFileSizeMax(10002400000l);
// 设置整个request的最大值
upload.setSizeMax(10002400000l);
upload.setHeaderEncoding("UTF-8");
try {
List<?> items = upload.parseRequest(request);
System.out.println("itemsSize--------------->"+items.size());
FileItem item = null;
String fileName = null;
for (int i = 0 ;i < items.size(); i++){
item = (FileItem) items.get(i);
fileName = base + File.separator + item.getName();
System.out.println("--------fileName-------->"+fileName);
System.out.println("------------------------>"+item.getNam