آموزش آپلود فیلم به سرور در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش آپلود فیلم به سرور در برنامه نویسی اندروید می پردازیم قبلا آموزش های مختلفی از BottomNavigation برای شما قرار داده بودیم رویه کار همانند قبل است فقط در آن طرف بخشی از کد فرق خواهد کرد در ادامه با ما همراه باشید.
ابتدا باید بخش سرور را ایجاد کنیم یک فایل در xampp یا هاست خودتان به نام upload.php ایجاد کنید و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 | <?php if($_SERVER['REQUEST_METHOD']=='POST'){ $file_name = $_FILES['myFile']['name']; $file_size = $_FILES['myFile']['size']; $file_type = $_FILES['myFile']['type']; $temp_name = $_FILES['myFile']['tmp_name']; $location = "uploads/"; move_uploaded_file($temp_name, $location.$file_name); echo "https://programchi.ir/uploads/".$file_name; }else{ echo "Error"; } |
در همان بخشی که فایل بالا را ایجاد کردید یک پوشه به نام uploads ایجاد کنید این پوشه بخشی است که فایل های ما در آن بعد از آپلود قرار خواهد گرفت در بالا از متود post به منظور گرفتن مقادیر استفاده کردیم باید چهار پارامتر به این فایل ارسال شود آدرس بالا به خاطر دلایل امنیتی وجود ندارد خودتان این فایل را می توانید در xampp یا wamp شبیه سازی کنید.
سمت سرور به پایان رسید.
شروع سمت اندروید
در بخش activity_main.xml کدهای زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Choose File" android:id="@+id/buttonChoose" /> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Upload" android:id="@+id/buttonUpload" /> <TextView android:id="@+id/textViewResponse" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> |
در بالا دو دکمه و دو TextView قرار دارد شکل زیر را تشکیل میدهد.
یک کلاس به نام Upload.java ایجاد کنید و کدهای زیر را در آن قرار دهید. (این یک کلاس کمکی است )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | package ir.programchi; import android.util.Log; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * Created by JFP on 11/22/2018. */ public class Upload { public static final String UPLOAD_URL= "http://programchi.ir/upload.php"; private int serverResponseCode; public String uploadVideo(String file) { String fileName = file; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; File sourceFile = new File(file); if (!sourceFile.isFile()) { Log.e("Huzza", "Source File Does not exist"); return null; } try { FileInputStream fileInputStream = new FileInputStream(sourceFile); URL url = new URL(UPLOAD_URL); conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("ENCTYPE", "multipart/form-data"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); conn.setRequestProperty("myFile", fileName); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"myFile\";filename=\"" + fileName + "\"" + lineEnd); dos.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); Log.i("Huzza", "Initial .available : " + bytesAvailable); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); serverResponseCode = conn.getResponseCode(); fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { ex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } if (serverResponseCode == 200) { StringBuilder sb = new StringBuilder(); try { BufferedReader rd = new BufferedReader(new InputStreamReader(conn .getInputStream())); String line; while ((line = rd.readLine()) != null) { sb.append(line); } rd.close(); } catch (IOException ioex) { } return sb.toString(); }else { return "Could not upload"; } } } |
کد بالا یک Helper است که با استفاده از آن به سادگی می توانید عمل آپلود به سرور را انجام دهید در بالا فقط باید UPLOAD_URL را تغییر دهید گفتم Url خودتان را باید جایگزین کنید.
وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.
1 2 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> |
نکته مهم ممکن است نتوانید فایل را انتخاب کنید (باید از RunTime Permission استفاده کنید در سایت آموزشش موجود است از لینک زیر استفاده کنید)
آموزش RunTime Permission در برنامه نویسی اندروید
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
میشه اپلیکیشن ضبط کننده فیلم که در حال نه بعد از ضبط ویدیو رو در لینک بفرسته برای مثال برنامه یک لینک از من میگیره و بعد من میزنم رو دکمه ضبط بعد برنامه من در حالی که دارم ویدیو ضبط میکنم داده ضبط منو در لینک پخش کنه و یا بعد ضبط در لینک پخش کنه لطفا این اپلیکیشن رو بسازید با تشکر