Страница 1 из 1

Закачка картинок на сервер

Добавлено: 22 мар 2013, 13:32
gc986
Всем привет!
Кто нибудь закачивал изображения на сервер? У меня появилась эта потребность ввиду желания загрузить на сервер вКонтаке своих фотографий. Я нашёл статью как это делать http://blog.plaincodesource.ws/2011/02/ ... ction.html, но механизм не заработал. Запрос получал имя сервера, пустой json и hash. Как думаете как реализовать этот механизм? :?:
ВК АПИ - http://vk.com/developers.php?oid=-1&p=% ... 1%82%D0%B5

Re: Закачка картинок на сервер

Добавлено: 18 апр 2013, 08:12
gc986
Всё решилось!
Для закачки картинок на сервер используется редкий код. Обычно чтобы закачать информацию на FTP и т.п. используется другой код. Выкладываю процедуру как она есть, кто сильно захочет, разберётся ;)
Для работы этого кода, обязательно использование библиотеки AndroidVKSDK. Не забудьте сохранить картинку прежде чем будите её закачивать.

Код: Выделить всё

	   // Загрузка фотографии на сервер VK.com
	   public void Upload_Photo(String _URL, String _FILENAME){
		   HttpClient httpclient = new DefaultHttpClient();
		   HttpPost httppost = new HttpPost(_URL);
		   final File file = new File(_FILENAME);
		   
		   try {
		     MultipartEntity entity = new MultipartEntity();
		    
		     entity.addPart("type", new StringBody("photo"));
		     entity.addPart("photo", new FileBody(file));
		     httppost.setEntity(entity);
		     HttpResponse response = httpclient.execute(httppost);
		     
		     // Читаем возврощённый буфер
		     BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
		        StringBuffer sb = new StringBuffer();
		        String line = null;
		        String NL = System.getProperty("line.separator");
		        while ((line = in.readLine()) != null) {
		            sb.append(line + NL);
		        }
		        
		        String _StrForParse = sb.toString();
                String _server = "";
                String _photo = "";
                String _hash = "";
                
                // Парсим строку
                try {
					// Создаём JSON объект
               	JSONObject jsonObj = new JSONObject(_StrForParse);
               	// Парсим
               	_server = jsonObj.getString("server");
               	_photo = jsonObj.getString("photo");
               	_hash = jsonObj.getString("hash");
               	
               	ArrayList<Photo> _PHOTO;
               	_PHOTO = api.saveWallPhoto(_server, _photo, _hash, null, null);
               	String _PID = null;
               	String _OWNER_ID = null;
               	for(int _i = 0; _i<_PHOTO.size(); _i++){
               		_PID = String.valueOf(_PHOTO.get(_i).pid); 
               		_OWNER_ID = _PHOTO.get(_i).owner_id;
               		Log.i("MyApp", "Data of photo, aid-"+_PHOTO.get(_i).aid+", owner_id-"+_PHOTO.get(_i).owner_id+", pid-"+_PHOTO.get(_i).pid+", src-"+_PHOTO.get(_i).src+", src_big-"+_PHOTO.get(_i).src_big+", src_big-"+_PHOTO.get(_i).phototext);
               	}
               	
               	// Размещение фотографии на странице пользователя
               	// Создаём коллекцию для фотографии
               	final String _pid = _PID;
               	final String _owner_id = _OWNER_ID;
               	Collection<String> attachments = new ArrayList<String>() { // anonymous subclass
                    { // anonymous initializer
                        add("photo"+_owner_id+"_"+_pid);}
               };
//               	attachments.add("photo_"+_PID);
               	api.createWallPost(account.user_id, "отправлено с помощью Android", attachments, null, false, false, false, null, null, null, null);
               	
               	//myHandler.sendEmptyMessage(10);
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (MalformedURLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (KException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		        
		   } catch (ClientProtocolException e) {
		   } catch (IOException e) {
		   }
	   }