Ich versuche, ein JPG-Dateiupload mit OKHttp zu einem mehrteiligen Formular auf einem PHP-Server zu replizieren. Ich glaube, ich habe einige der Parameter an der falschen Stelle, ich habe nicht die Vertrautheit mit mehrteiligen Formen in http und der Nomenklatur.Was sind die korrekten Stellen für Parameter in OKHttp in einem mehrteiligen Formularaufruf?
Hier ist, was ich versuche
Geben Sie die Parameter (Name Wertepaare) zu erreichen: myuser, Token, Typen zu https://www.somesite.com/jpgphotoupload.php
ich dann eine mehrteilige Form Anfrage mit Verfahren machen POST, mit dem folgenden: Pfad: https://www.somesite.com/jpgphotoupload.php
Dateidaten: JPEG komprimierte Bilddaten der Größe 480 x 640 (das verstehe ich)
mime: image/jpeg (Das verstehe ich)
nicht sicher, wo die folgenden Name-Wert-Paare sollten als Teil des mehrteiligen Form Antrag gestellt werden, versucht addFormDataPart
Parameter: wieder der Parameter Form oben, (myuser, Token, Typen)
name: Bilddatei
Dateiname: myname.jpg
Darüber hinaus ist hier, was sonst
"Connection" , "Keep-Alive"
"ENCTYPE", "multipart/form-data"
"Content-Type", "multipart/form-data"
ist relevant sein kann Hier ist der Code, den ich im Moment haben.
MediaType MEDIA_TYPE_JPG = MediaType.parse("image/jpg");
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"imagefile\""),
RequestBody.create(MEDIA_TYPE_JPG, new File("/storage/emulated/0/download/camerapic.jpg")))
.addFormDataPart("myuser", getprefmyuser(getBaseContext()))
.addFormDataPart("token", getpreftoken(getBaseContext()))
.addFormDataPart("types", "type1")
.addFormDataPart("fileName", "myname.jpg")
.build();
Request request = new Request.Builder()
.header("myuser", getprefmyuser(getBaseContext()))
.header("token", getpreftoken(getBaseContext()))
.header("type", "car")
.url("https://www.somesite.com/jpgphotoupload.php")
.post(requestBody)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
...
return null;
}
Ich brauche ein Video hochladen, die Erfassung auf einem mobilen Gerät, so dass ich bin zu raten, '.mp4' so, was ich für' RequestBody.create (MediaType.parse („video/quicktime“) angeben sollte, sourceFile) '? verwende ich noch 'quicktime'? (Ich weiß nicht viel über Videos) –
und Ihre Videoquelle ist das nur eine Datei? wie in 'neue Datei (myFileName)'? Hier nehme ich an, dass myFileName der genaue Wert ist, der vorher übergeben wurde. –
Ja, meine Videoquelle war '' 'sourceFile''' in dem bereitgestellten Code (eine Videodatei, die auf die Festplatte geschrieben wurde). IIRC, '' 'myFileName''' ist, was Sie sagen, dass der Name der Datei ist und sein kann, was immer Sie wollen. Das '' 'File''' Objekt wird verwendet, um die Daten zu erhalten, aber ich glaube nicht, dass der ursprüngliche uri/name eine Rolle spielt. –