Struts2 Upload de Imagens

26/10/2011

0

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.

Responder

Posts

27/10/2011

Robson Teixeira

nas tags do struts2 procure a tag <s:file que talvez possa te ajudar.
Responder

09/11/2011

Dyego Carmo

Resolvido o problema ?

Qualquer coisa estou a disposição :)

Se sim , poderia fechar o chamado ?
Responder

05/12/2011

Ricardo Silva.

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar