2014-05-13 2 views
1

일부 텍스트 및 숫자 형식의 이미지를 html 형식으로 업로드하려고합니다. 프론트 엔드에서 나는 백엔드에서 angularjs와 rest jersey를 사용합니다. 내 문제는 내 개체 "Vehicule"마녀가 바이트 [] 이미지가 포함 된 유지하려고 할 때입니다. 내가 각도 컨트롤러에서 자원 지시문을 사용하고 있지만 양식을 제출하려고 할 때 "VALUE_STRING을 base64 (MIME-NO-LINEFEEDS)로 디코딩하지 못했습니다. 잘못된 문자 ':'(코드 0x3a) 베이스 64 콘텐츠 "와 나는 앵귤러 및 휴식 저지에서 초보자이기 때문에 어떤 생각이 있습니다. 내 코드는 다음과 같습니다.VALUE_STRING을 base64 (MIME-NO-LINEFEEDS)로 디코딩하지 못했습니다.

@JsonIgnoreProperties(ignoreUnknown = true) 
@Entity 
public class Vehicule implements Serializable { 

private static final long serialVersionUID = 1L; 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 
@Column 
String marque; 
@Column 
String nom; 
@Column 
String numMat; 
@Column 
Long nbChevaux; 
@Column 
Long annee; 
//@Type(type="org.hibernate.type.StringClobType") 
@Column(length=100000) 
byte[] image=null; 
@Column(unique=true) 
Long marqueur=null; 
public Long getMarqueur() { 
    return marqueur; 
} 
public void setMarqueur(Long marqueur) { 
    this.marqueur = marqueur; 
} 
public Long getAnnee() { 
    return annee; 
} 
public void setAnnee(Long annee) { 
    this.annee = annee; 
} 
public byte[] getImage() { 
    return image; 
} 
public void setImage(byte[] image) { 
    this.image = image; 
} 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
public String getMarque() { 
    return marque; 
} 
public void setMarque(String marque) { 
    this.marque = marque; 
} 
public String getNom() { 
    return nom; 
} 
public void setNom(String nom) { 
    this.nom = nom; 
} 
public String getNumMat() { 
    return numMat; 
} 
public void setNumMat(String numMat) { 
    this.numMat = numMat; 
} 
public Long getNbChevaux() { 
    return nbChevaux; 
} 
public void setNbChevaux(Long nbChevaux) { 
    this.nbChevaux = nbChevaux; 
} 
    @Override 
public int hashCode() { 
    final int prime = 31; 
    int result = 1; 
    result = prime * result + ((id == null) ? 0 : id.hashCode()); 
    return result; 
} 
@Override 
public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) 
     return false; 
    if (!(obj instanceof Vehicule)) 
     return false; 
    Vehicule other = (Vehicule) obj; 
    if (id == null) { 
     if (other.id != null) 
      return false; 
    } else if (!id.equals(other.id)) 
     return false; 
    return true; 
} 
} 
@Component 
@Path("/vehicules") 
public class Vehicules { 

private final Logger logger = LoggerFactory.getLogger(this.getClass()); 

    @Autowired 
    private VehiculeDao vehiculeDao; 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public List<Vehicule> vehiculesList() 

{ 
     return vehiculeDao.getAll(); 

} 

    @POST 
    @Produces(MediaType.APPLICATION_JSON) 
    @Consumes(MediaType.APPLICATION_JSON) 
    public Vehicule createVehicule(Vehicule vehicule) 

{ 
     this.logger.info("create(): " + vehicule); 
     return this.vehiculeDao.save(vehicule); 
    } 

} 

function CreateVehiculeController($scope, $routeParams, $location, VehiculesService) 

{ 

    $scope.vehicule = new VehiculesService(); 
$scope.save = function() { 
$scope.vehicule.$save(function() { 
$location.path('/'); 

} 

답변

2

window.btoa(your_image_as_binary_string);을 컨트롤러에 제출하십시오.

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64.btoa

+0

안녕하세요, 유용한 답변입니다. 어쩌면 내가 뭔가를 놓친 것 같아. 'FileReader.readAsBinaryString()','window.btoa (FileReader.resul)'및'JSON.stringify (object_with_the_file)'를 사용하여 파일을로드 할 경우. 서버에'data : text/plain; base64, R2lvcm5pIGR ... =='을 포함하는 파일이 있습니다 (base64 표현의 base64?). 'FileReader.readAsText()'를 사용하면 서버가 파일을 올바르게 수신합니다. 나는 무엇을 놓치나요? – Francesco

관련 문제