struts上传

[size=medium][/size]public ActionForward upLoad(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
FileForm fileForm=(FileForm)form;
List<FileForm.myFile> files=fileForm.getImportFileList();

for(int i =0;i<files.size();i++){
FileForm.myFile uploadFile = files.get(i);
FormFile file = uploadFile.getFile();

if(file==null||file.getFileName()==null||"".equals(file.getFileName())){
System.out.println("file is null");
continue;//这里判断JSP页面中的input框是否有值
// return new ActionForward(request.getHeader("Referer"),true);
}
else{
String fileName = file.getFileName();
int fileSize = file.getFileSize();
byte[] fileDate = file.getFileData();//下面这句得到服务器上的上传目录+文件名
String path=this.getServlet().getServletContext().getRealPath("/")+UPLOAD_FOLDER+fileName;

UploadUtil.saveFile(path,fileDate,fileSize,File_DEST);//调用uplodautil中的方法上传文件
file.destroy();
}
}


return mapping.findForward("success");
} formbean:

public class FileForm extends ActionForm {
/*
* Generated fields
*/
public class myFile {
private FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
}

public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded";
protected List<myFile> importFile;
public FileForm()
{
importFile=new ArrayList<myFile>();
importFile.add(0,new myFile());//初始化页面只有一个input

}
/*
* Generated Methods
*/

/**
* Method validate
*
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors=new ActionErrors();
Boolean maxLengthExceeded = (Boolean) request.getAttribute(
MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);

if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue()))

{
errors.add("文件", new ActionMessage("too big"));
}
return errors;

/*if (null == importFile.getFileName() || "".equals(theFile.getFileName())) {

errors.add("theFileError", new ActionMessage("errors.upload.file"));

}*/



}

/**
* Method reset
*
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}

public List<myFile> getImportFileList() {
return importFile;
}

public void setImportFileList(List<myFile> importFile) {
this.importFile = importFile;
}

public myFile getImportFile(int index) {
int size = importFile.size();
if (index > size-1) {
for (int i=0;i<index-size+1;i++){
importFile.add(new myFile());
}
}
return importFile.get(index);
}

public void setImportFile(int index,FormFile file) {
myFile element= new myFile();
element.setFile(file);
this.importFile .add(index, element);
}


} JSP页面:

<body>

<html:form action="/file.do?method=upLoad" method="post" enctype="multipart/form-data">


<%--<logic:iterate id="importFile" name="fileForm" property="importFileList" indexId="index">
<html:file property="file" name="importFile" indexed="true"/><html:errors property="theFile"/><br/>
</logic:iterate>--%>
<input type="file" name="importFile[0].file"/><br>
<input type="file" name="importFile[1].file"/><br>
<input type="file" name="importFile[2].file"/><br>
<input type="file" name="importFile[3].file"/><br>
<input type="file" name="importFile[4].file"/><br>
<input type="file" name="importFile[5].file"/><br>



<html:submit/><html:cancel/>



</html:form>

</body>
uploadUtil 类:

package com.yourcompany.struts.action;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class UploadUtil {
private static final String DATABASE_DEST = "database";

private static final String FILE_DEST = "file";

private static final int MAX_SIZE = 1024 * 1024;

private static final String[] TYPES = { ".jpg", ".gif", ".zip", ".rar" };

public static void saveFile(String fileName, byte[] fileData, int size,
String dest) throws FileNotFoundException, IOException {

if (!checkSize(size)) {
throw new IOException(size + " is too large !");
}

if (!checkType(fileName)) {
throw new IOException("Unvaildate type !");
}

if (dest.equals(DATABASE_DEST)) {
saveToDb(fileName, fileData);
}

if (dest.equals(FILE_DEST)) {
saveToFile(fileName, fileData);
}

}

private static void saveToDb(String fileName, byte[] fileData) {

}

private static void saveToFile(String fileName, byte[] fileData)
throws FileNotFoundException, IOException {
OutputStream o = new FileOutputStream(fileName);
o.write(fileData);
o.close();
}

public static void delFile(String fileName, String dest)
throws NullPointerException, SecurityException {
if (dest.equals(DATABASE_DEST)) {
delFromDb(fileName);
}

if (dest.equals(FILE_DEST)) {
delFromFile(fileName);
}

}

private static void delFromDb(String fileName) {

}

private static void delFromFile(String fileName)
throws NullPointerException, SecurityException {

File file = new File(fileName);
if (file.exists())
file.delete();
}

private static boolean checkSize(int size) {
if (size > MAX_SIZE)
return false;
return true;

}

private static boolean checkType(String fileName) {
for (int i = 0; i < TYPES.length; i++) {
if (fileName.toLowerCase().endsWith(TYPES[i])) {
return true;
}

}
return false;

}

}
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值