Struts2 Upload de Imagens

Java

26/10/2011

Gostaria de alguma dica para monitorar o upload com progresso bar. Tenho exemplos feito no modo normal funciona muito bem, mais gostaria de monitorar o arquivo. Outra coisa teria como definir tamanho da imagem a se feito upload como height e widtt?
Ricardo Silva.

Ricardo Silva.

Curtidas 0

Respostas

Robson Teixeira

Robson Teixeira

26/10/2011

nas tags do struts2 procure a tag <s:file que talvez possa te ajudar.
GOSTEI 0
Dyego Carmo

Dyego Carmo

26/10/2011

Resolvido o problema ?

Qualquer coisa estou a disposição :)

Se sim , poderia fechar o chamado ?
GOSTEI 0
Ricardo Silva.

Ricardo Silva.

26/10/2011

Caro colega desculpe pela demora. Mais vamos lá:
Estou usando struts 2 annotations para fazer upload de imagem, funciona perfeitamente gostaria de implementar o progresso bar teria como ajudar. Segue código abaixo

import br.com.tularte.modelo.Cor;
import java.io.File;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import java.awt.Image;
import javax.swing.ImageIcon;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

@ParentPackage(default)
public class FileUploadAction extends ActionSupport implements
        ServletRequestAware {

    private static final long serialVersionUID = 1L;
    private File userImage;
    private String userImageContentType;
    private String userImageFileName;
    private Cor cor;
    private HttpServletRequest servletRequest;

    @Action(value = userImage, results = {
        @Result(name = ok, location = /admin/inserircor.jsp),
        @Result(name = input, location = /admin/inserircor.jsp)
    }, interceptorRefs = {
        @InterceptorRef(seguranca),
        @InterceptorRef(fileUploadStack)
    })
    @Override
    public String execute() {
        try {
            if (hasFieldErrors() == false) {
            String filePath = servletRequest.getRealPath(/imagens/cor) + /;
            System.out.println(Server path: + filePath);

            Image inImage = new ImageIcon(userImage.getPath()).getImage();
            if ((inImage.getWidth(null) != 160) || (inImage.getHeight(null) != 150)) {
                addActionError(Tamanho da Imagem maior que o permitido 160X150.);                
                return input;
            } else {
                File fileToCreate = new File(filePath, this.userImageFileName);
                FileUtils.copyFile(this.userImage, fileToCreate);
                cor.setCorimagem(userImageFileName);
                return ok;
            }

            }
            return input;

        } catch (Exception e) {
            e.printStackTrace();
            addActionError(e.getMessage());

            return input;
        }


    }

    public File getUserImage() {
        return userImage;
    }

    public void setUserImage(File userImage) {
        this.userImage = userImage;
    }

    public String getUserImageContentType() {
        return userImageContentType;
    }

    public void setUserImageContentType(String userImageContentType) {
        this.userImageContentType = userImageContentType;
    }

    public String getUserImageFileName() {
        return userImageFileName;
    }

    public void setUserImageFileName(String userImageFileName) {
        this.userImageFileName = userImageFileName;
    }

    public void setServletRequest(HttpServletRequest servletRequest) {
        this.servletRequest = servletRequest;
    }

    public Cor getCor() {
        return cor;
    }

    public void setCor(Cor cor) {
        this.cor = cor;
    }
}



Estou usando java para verificar o tamanho da imagem e interceptor para verificar o tamanho em bytes e tipo de formato. Uma pergunta teria como fazer essa requisicao via ajax? Motivo, o uplod submit fica no fim do formulario necessitando usar a barra de rolagem para fazer o upload e assim que dar o refresh na tela a barra de rolagem retorna para inicio, gostaria que ficase no lugar onde foi efetuado o submit.

Muito Obrigado
GOSTEI 0
POSTAR