2015-06-17 2 views
0

Я пытаюсь загрузить изображение на сервер с помощью php. Но я получаю следующую ошибку:Ошибка при загрузке изображения на сервер с использованием PHP

Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 171:my server name/upload.php?sel_bar_code=ab12&text=hello&image=[encoded image to base64 comes hear]

Я не получаю эту ошибку на android. Ниже мой код, который загружает изображения на сервер.

if (isImage) { 
      imgPreview.setVisibility(View.VISIBLE); 
      vidPreview.setVisibility(View.GONE); 
      // bimatp factory 
      BitmapFactory.Options options = new BitmapFactory.Options(); 

      // down sizing image as it throws OutOfMemory Exception for larger 
      // images 
      options.inSampleSize = 8; 

      bitmap = BitmapFactory.decodeFile(filePath, options); 
      imgPreview.setImageBitmap(bitmap); 

      ByteArrayOutputStream ByteStream=new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.PNG,100, ByteStream); 
      byte [] b=ByteStream.toByteArray(); 
      image_value=Base64.encodeToString(b, Base64.DEFAULT); 

фона Код процесса:

protected String doInBackground(Void... params) { 
      return uploadFile(); 
     } 

     @SuppressWarnings("deprecation") 
     private String uploadFile() { 
      String responseString = null; 

      HttpClient httpclient = new DefaultHttpClient(); 
      List<NameValuePair> qparams = new ArrayList<NameValuePair>(); 
     // These params should ordered in key 
      qparams.add(new BasicNameValuePair("sel_bar_code", product_id)); 

      HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL+"sel_bar_code="+product_id+"&text="+text_value +"&image="+image_value); 

      try { 
       AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
         new ProgressListener() { 

          @Override 
          public void transferred(long num) { 
           publishProgress((int) ((num/(float) totalSize) * 100)); 
          } 
         }); 

       File sourceFile = new File(filePath); 

       // Adding file data to http body 
       entity.addPart("image", new FileBody(sourceFile)); 

       // Extra parameters if you want to pass to server 
       entity.addPart("website", 
         new StringBody("www.google.com")); 
       entity.addPart("email", new StringBody("[email protected]")); 

       totalSize = entity.getContentLength(); 
       httppost.setEntity(entity); 

       // Making server call 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity r_entity = response.getEntity(); 

       int statusCode = response.getStatusLine().getStatusCode(); 
       if (statusCode == 200) { 
        // Server response 
        responseString = EntityUtils.toString(r_entity); 
       } else { 
        responseString = "Error occurred! Http Status Code: " 
          + statusCode; 
       } 

      } catch (ClientProtocolException e) { 
       responseString = e.toString(); 
      } catch (IOException e) { 
       responseString = e.toString(); 
      } 

      return responseString; 

     } 

ответ

0

Вчера я разрабатываю тот же процесс ...

  • Разница в мое приложение нужно отправить по одной фотографии. С другой стороны, я посылаю байты изображения как String, в финале у меня были проблемы с сжатием Base64, потому что флаг Base64.DEFAULT добавляет в строку в моем случае. Я решаю это, используя флаг «Base64.NO_WRAP». Чтобы опустить эту проблему, вам необходимо скопировать файл в общий каталог перед отправкой, чтобы убедиться, что файл не поврежден.

  • Возможно также, что сервер имеет файл с низким размером, который может отправлять, часть сервера ограничивает размер файлов, которые получают.

Если я могу помочь вам рассказать мне и хорошее программирование!

Смежные вопросы