Büyük ölçüde bilgi ve bağlantılardan here bulunan bulduğum iki adım çözüm İşte. Bu çözüm, bazı ilgili SO gönderilerinde upload2server() yönteminden daha iyi kavramak için daha kolaydı. Umarım bu bir başkasına yardım eder.
1) Galeriden video dosyasını seçin.
Bir değişken oluşturun private static final int SELECT_VIDEO = 3;
- hangi numarayı kullandığınız önemli değil, daha sonra denetleyeceğinize kadar. Ardından, bir video seçmek için bir niyet kullanın.
UploadVideo() yöntemini başlatmak için onActivityResult() öğesini kullanın. Eğer sizi çalışma sonra muhtemelen edeceğiz
private void uploadVideo(String videoPath) throws ParseException, IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(YOUR_URL);
FileBody filebodyVideo = new FileBody(new File(videoPath));
StringBody title = new StringBody("Filename: " + videoPath);
StringBody description = new StringBody("This is a description of the video");
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("videoFile", filebodyVideo);
reqEntity.addPart("title", title);
reqEntity.addPart("description", description);
httppost.setEntity(reqEntity);
// DEBUG
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
// DEBUG
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
} // end if
if (resEntity != null) {
resEntity.consumeContent();
} // end if
httpclient.getConnectionManager().shutdown();
} // end of uploadVideo()
:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_VIDEO) {
System.out.println("SELECT_VIDEO");
Uri selectedVideoUri = data.getData();
selectedPath = getPath(selectedVideoUri);
System.out.println("SELECT_VIDEO Path : " + selectedPath);
uploadVideo(selectedPath);
}
}
}
private String getPath(Uri uri) {
String[] projection = { MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION};
Cursor cursor = managedQuery(uri, projection, null, null, null);
cursor.moveToFirst();
String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
int fileSize = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
long duration = TimeUnit.MILLISECONDS.toSeconds(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)));
//some extra potentially useful data to help with filtering if necessary
System.out.println("size: " + fileSize);
System.out.println("path: " + filePath);
System.out.println("duration: " + duration);
return filePath;
}
2) projenize ekleyin son HttpClient kavanoz indirmek, http://hc.apache.org/downloads.cgi gidin ve aşağıdaki yöntemi kullanarak video yükleyebilir Bir iş parçacığı içine koymak ve bir yükleme iletişim kutusu eklemek istiyorum, ancak bu başlamanızı sağlayacaktır. Upload2Server() yöntemini başarısız bir şekilde denedikten sonra benim için çalışıyor. Bu, bazı küçük ayarlarda görüntü ve ses için de çalışacaktır.
Çok güzel! Bu büyük boy video için kullanılabilir mi? Ya da başka bir dosya türü için kullanılabilir mi? –
@AliBagheriShakib daha büyük videolar için iyi çalışmalı. Evet, ses klipleri veya diğer dosya türleri için çok benzer şekilde kullanılabilir. Eğer herhangi bir sorun varsa bana bildirin. –
Evet @Kyle Clegg. Benim için mükemmel çalıştı. Sorunlarım kardeşim çözüldü :) Kendi deneyimlerimi de gönderiyorum: http://stackoverflow.com/q/23504191/2624611 –