0
Ich versuche, Bild mit Server hochzuladen. In Android, es mit diesem Code perfekt arbeiten:Bild mit Alamofire mit MultiFormData hochladen
RestTemplate restTemplate = new RestTemplate();
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
String strPath = "D:\\Personal\\Projects\\Resources\\Images\\ic_flash_on.png";
Path path = Paths.get(strPath);
byte[] bytes = Files.readAllBytes(path);
map.add("id", 2);
map.add("file", new ByteArrayResource(bytes) {
@Override
public String getFilename() {
return "ic_flash_on.png";
}
});
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.add("Authorization", request.getHeader("Authorization"));
HttpEntity<MultiValueMap<String, Object>> imageEntity = new HttpEntity<MultiValueMap<String, Object>>(map, headers);
ResponseEntity<Photo> result = restTemplate.exchange("http://localhost:8080/api/photos/upload", HttpMethod.POST,
imageEntity, Photo.class);
return result;
In iOS, ich bin mit Alamofire mit Code:
let url = HOST + "api/photos/upload"
let accessToken = KeychainHelper.getStringForKey(KeychainConstaint.kAccessTokenKey) ?? ""
let headers = [
"Authorization": "Bearer \(accessToken)",
"Content-Type": "multipart/form-data"
]
Alamofire.upload(
.POST,
url,
headers: headers,
multipartFormData: { multipartFormData in
var id = 10000
let idData = NSData(bytes: &id, length: sizeof(Int))
//multipartFormData.appendBodyPart(data: photo.data, name: "file")
multipartFormData.appendBodyPart(data: idData, name: "id")
multipartFormData.appendBodyPart(data: photo.data, name: "file", fileName: ".jpg", mimeType: "image/jpeg")
},
encodingMemoryThreshold: Manager.MultipartFormDataEncodingMemoryThreshold) { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
Und mit Grund fehlschlagen: „Erforderlich MultipartFile Parameter 'Datei' nicht Geschenk "
Habe ich etwas vermisst? :(
ich Ihren Kampf höre, hatte ich, was heute wie ein ähnliches Problem sieht. In meinem Fall hatte es mit dem Parameter „withname“ und „filename“ in der multipartFormData.append() Aufruf zu tun. Ich würde vorschlagen, wenn Sie Kontrolle über die Spring-Back-End, eine "Filter" -Klasse mit einem Haltepunkt hinzufügen, wo Sie sowohl die "guten" als auch "schlechte" Anfragen untersuchen können, um genau zu sehen, was anders ist (es wird den Haltepunkt erreichen bevor ich mit dieser Fehlermeldung scheiterte). – MikaelW
Hi. Ich fand diesen fileName: sollte nicht wie dieses ".jpg" formatieren. Ich war Konflikt der 'Name' Parameter und 'fileName' in dieser Funktion. –