آپلود فایل و عکس به سرور به همراه کد php
سلام دوستان گرامی
من با استفاده از کد زیر تونستم عکس رو روی سرور آپلود کنم که کد پی اچ پی سمت سرور رو هم گذاشتم
فقط سوالی که داشتم اینه که در مورد کد یه مقدار برام توضیح بدین که چطوری کار می کنه و اینکه من می خوام با اسمی که من میخوام در سرور ذخیره بشه . ولی با کد زیر عکس با اسمی که داره تو سرور آپلود میشه
ممنون
public class UploadToServer {
private static Dialog dialog;
public static void uploadFile(String imagePath, String upurl) {
String fileName = imagePath;
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(imagePath);
if ( !sourceFile.isFile()) {
if (dialog != null && (dialog.isShowing())) {
dialog.dismiss();
}
Log.e("uploadFile", "Source File not exist :" + imagePath);
}
else
{
try {
// open a URL connection to the Servlet
FileInputStream fileInputStream = new FileInputStream(sourceFile);
URL url = new URL(upurl);
// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
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("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
+ fileName + "\"" + lineEnd);
dos.writeBytes(lineEnd);
// create a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// read file and write it into form...
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);
}
// send multipart form data necesssary after file data...
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
// Responses from the server (code and message)
int serverResponseCode = conn.getResponseCode();
String serverResponseMessage = conn.getResponseMessage();
Log.i("uploadFile", "HTTP Response is : "
+ serverResponseMessage + ": " + serverResponseCode);
//close the streams //
fileInputStream.close();
dos.flush();
dos.close();
}
catch (MalformedURLException ex) {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
ex.printStackTrace();
Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
}
catch (Exception e) {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
e.printStackTrace();
}
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
}
} // End else block
}
کد بالا که از شما یه آدرس عکس میگیره و یه آدرس سرور و فایل پی اچ پی
کد سمت سرور
$file_path ="images/";
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)){
echo "success";}else{ echo "fail";}
که فایل رو میگیره و در پوشه images ذخیره میکنه پس قبل از اجرا این پوشه رو سمت سرور ایجاد کنید.
دوستان سوالی که من دارم اینه که برای یه پروژه تجاری حالا نه چندان کوچک ( و حالا هر پروژه ای که مهم باشه ) این تابع کفایت میکنه ؟ آخه من خوندم که باید از asyncTask استفاده کرد. ؟
سوال بعدیم این که چجوری از کلاس MultipartEntity استفاده کنیم ؟ من هرکار میکنم نمیشناستش. ممنون
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .