Laufzeitausnahme beim Hochladen von Bild auf den Server
-
26-10-2019 - |
Frage
Das folgende ist das runtime exeception
Was ich bekam, während ich versuche, ein Bild auf den Server hochzuladen.
Und versuche ein Bild mit meinem lokalen Server (WAMP) hochzuladen und mein Android -Code ist
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/Sunset.jpg");
// Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.background1);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
byte [] byte_arr = stream.toByteArray();
String image_str = Base64.encodeBytes(byte_arr);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("image",image_str));
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.49/android/upload_image.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
String the_string_response = convertResponseToString(response);
Toast.makeText(uploadimage.this, "Response " + the_string_response, Toast.LENGTH_LONG).show();
}catch(Exception e){
Toast.makeText(uploadimage.this, "ERROR " + e.getMessage(), Toast.LENGTH_LONG).show();
System.out.println("Error http connection"+e.toString());
}
}
public String convertResponseToString(HttpResponse response) throws IllegalStateException, IOException{
String res = "";
StringBuffer buffer = new StringBuffer();
inputStream = response.getEntity().getContent();
int contentLength = (int) response.getEntity().getContentLength(); //getting content length…..
Toast.makeText(uploadimage.this, "contentLength : " + contentLength, Toast.LENGTH_LONG).show();
if (contentLength < 0){
}
else{
byte[] data = new byte[512];
int len = 0;
try
{
while (-1 != (len = inputStream.read(data)) )
{
buffer.append(new String(data, 0, len)); //converting to string and appending to stringbuffer…..
}
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
inputStream.close(); // closing the stream…..
}
catch (IOException e)
{
e.printStackTrace();
}
res = buffer.toString(); // converting string buffer to string
Toast.makeText(uploadimage.this, "Result : " + res, Toast.LENGTH_LONG).show();
//System.out.println("Response => " + EntityUtils.toString(response.getEntity()));
}
return res;
}
}
Und das ist mein PHP -Code, den ich aus dem Internet erhalten habe.
<?php
$base=$_REQUEST['image'];
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$file = fopen('uploaded_image.jpg', 'wb');
fwrite($file, $binary);
fclose($file);
echo 'Image upload complete!!, Please check your php file directory……';
?>
Kann mir jemand dabei helfen, mein Problem zu lösen? vielen Dank im Voraus
Lösung
Sie müssen ein zusätzliches Verzeichnis in C: erstellen und dann lesen, schreiben und die Erlaubnis ausführen. Schreiben Sie in Ihrem PHP -Code bitte den absoluten Pfad des Speicherorts.
Dies kann Ihr Problem lösen.
Denken Sie daran, den IIS -Server im Administratormodus auszuführen.
Andere Tipps
Inetpub wird vom Systembenutzer erstellt. Dies bedeutet, dass Sie ohne Administratorberechtigte keine Änderungen an diesem oder einer seiner Unterverzeichnisse vornehmen dürfen. Ändern Sie die Berechtigungen des inetpub -Ordners, damit jeder die Dateien ändern kann. Klicken Sie mit der rechten Maustaste -> Eigenschaften -> ... Ich vergesse danach, was zu tun ist. (Ich bin gerade unter Linux). Wenn das nicht funktioniert, stellen Sie sicher, dass Sie IIS als Administrator ausführen.