Nomeie vários objetos de campo de arquivo com o mesmo nome na página upload.jsp, para que vários campos de arquivo possam ser analisados em uma matriz na ação. O tamanho da matriz é o número de campos de arquivo ao mesmo tempo. O campo é analisado em três variáveis correspondentes, portanto, vários campos de arquivo correspondem a três matrizes, onde o tamanho de cada matriz é o número de campos de arquivo. O código da página jsp é o seguinte:
</form>
A ação correspondente percorre todos os campos do arquivo em sequência e, em seguida, gera o fluxo do arquivo de entrada correspondente. O fluxo do arquivo de saída adiciona o fluxo do arquivo de saída correspondente para salvar o arquivo no caminho de armazenamento do servidor especificado. Ao mesmo tempo, especifique dinamicamente o caminho para salvar o arquivo no servidor.
O código de ação é o seguinte:
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileOutputStream;
importar org.apache.struts2.ServletActionContext;
importar com.opensymphony.xwork2.ActionSupport;
classe pública UploadAction estende ActionSupport {
título da string privada;
upload de arquivo privado[];
private String[] uploadNomeArquivo;
private String[] uploadContentType;
string privada savePath;
public String getTítulo() {
título de retorno;
}
public void setTitle(String título) {
este.título = título;
}
Arquivo público[] getUpload() {
upload de retorno;
}
public void setUpload(arquivo[] upload) {
isto.upload=carregar;
}
public String[] getUploadNomeArquivo() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
string pública[] getUploadContentType() {
retornar uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
string pública getSavePath() {
retornar ServletActionContext.getRequest().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public String upload() lança exceção{
Arquivo[] arquivos=this.getUpload();
for(int i=0;i<arquivos.comprimento;i++){
FileOutputStream fos=new FileOutputStream(this.getSavePath()+"//"+this.getUploadFileName()[i]);
byte[] buffer=novo byte[1024];
FileInputStream fis=new FileInputStream(arquivos[i]);
int comprimento=0;
while((len=fis.read(buffer))>0){
fos.write(buffer,0,len);
}
}
retornar SUCESSO;
}
}
O arquivo struts.xml é configurado da seguinte forma: configure o interceptor para upload de arquivo, tipos de arquivos de upload permitidos, limite de tamanho de arquivo de upload e introduza o interceptador defaultStack e o local de armazenamento do arquivo carregado no servidor.
</struts>
O código da página Success.jsp é o seguinte: