نمایش نتایج 1 تا 5 از 5

نام تاپیک: سوال در مورد آپلود عکس به سرور

  1. #1

    سوال در مورد آپلود عکس به سرور

    با سلام به همه دوستان گرامی.
    بنده مبتدی هستم و یک برنامه برای آپلود عکسهام به سرور احتیاج دارم.
    این کدهارو از اینترنت گرفتم و تا حدودی ویرایش کردم ولی سرورم هیچی دریافت نمیکنه
    به احتمال 90 درصد کدهای اندرویدم مشکل دارن.
    اگه دوستان کسی میتونه، لطف کنه کمک کنه، خیلی برام ضروریه.
    با تشکر.




    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import org.apache.http.HttpResponse;
    import org.apache.http.HttpVersion;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.params.BasicHttpParams;
    import org.apache.http.params.CoreProtocolPNames;
    import org.apache.http.params.HttpParams;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;


    public class SendpicActivity extends Activity {

    //Declaring views
    private Button buttonUpload;
    private TextView messageText;
    private int serverResponseCode = 0;

    String upLoadServerUri = null;

    /********** File Path *************/
    final String uploadFilePath = G.DIR_APP;
    final String uploadFileName = "aval.jpg";

    private static DefaultHttpClient mHttpClient;


    public static void ServerCommunication() {
    HttpParams params = new BasicHttpParams();
    params.setParameter(CoreProtocolPNames.PROTOCOL_VE RSION, HttpVersion.HTTP_1_1);
    mHttpClient = new DefaultHttpClient(params);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    messageText = (TextView) findViewById(R.id.textView1);
    messageText.setText("Uploading file path :- '/mnt/sdcard/" + uploadFileName + "'");

    /************* Php script path ****************/
    upLoadServerUri = "http://192.168.1.35:8080/download-files/upload.php/";

    //Initializing views
    buttonUpload = (Button) findViewById(R.id.button1);

    //Setting clicklistener
    buttonUpload.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

    Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {

    new Thread(new Runnable() {

    @Override
    public void run() {
    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("uploading started.....");
    }
    });

    HttpURLConnection conn = null;
    DataOutputStream dos = null;
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 2 * 1024 * 1024;
    File sourceFile = new File(uploadFilePath, uploadFileName);

    if ( !sourceFile.isFile()) {


    Log.e("uploadFile", "Source File not exist :"
    + uploadFilePath + "/" + uploadFileName);

    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("Source File not exist :"
    + uploadFilePath + "/" + uploadFileName);
    }
    });

    }
    else
    {
    try {

    // open a URL connection to the Servlet
    FileInputStream fileInputStream = new FileInputStream(sourceFile);
    URL url = new URL(upLoadServerUri);
    // 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", uploadFileName);

    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)
    serverResponseCode = conn.getResponseCode();
    String serverResponseMessage = conn.getResponseMessage();

    Log.i("uploadFile", "HTTP Response is : "
    + serverResponseMessage + ": " + serverResponseCode);

    if (serverResponseCode == 200) {

    runOnUiThread(new Runnable() {

    @Override
    public void run() {

    String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
    + uploadFileName;

    messageText.setText(msg);
    Toast.makeText(SendpicActivity.this, "File Upload Complete.",
    Toast.LENGTH_SHORT).show();
    }
    });
    } else {
    Toast.makeText(SendpicActivity.this, "File Upload Not Complete.",
    Toast.LENGTH_SHORT).show();
    }

    //close the streams //
    fileInputStream.close();
    dos.flush();
    dos.close();

    }
    catch (MalformedURLException ex) {

    ex.printStackTrace();

    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("MalformedURLException Exception : check script url.");
    Toast.makeText(SendpicActivity.this, "MalformedURLException",
    Toast.LENGTH_SHORT).show();
    }
    });

    Log.e("Upload file to server", "error: " + ex.getMessage(), ex);
    }
    catch (Exception e) {

    e.printStackTrace();

    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("Got Exception : see logcat ");
    Toast.makeText(SendpicActivity.this, "Got Exception : see logcat ",
    Toast.LENGTH_SHORT).show();
    }
    });
    Log.e("Upload file to server Exception", "Exception : "
    + e.getMessage(), e);
    }

    } // End else block
    }

    }).start();
    }
    });
    thread.start();
    }

    });
    }


    public void uploadUserPhoto(File image) {

    try {

    HttpPost httppost = new HttpPost("http://192.168.1.35:8080/download-files/upload.php");

    HttpResponse result = mHttpClient.execute(httppost);
    InputStream stream;
    stream = result.getEntity().getContent();
    String resp = inputstreamToString(stream);
    Log.i("negano", "response is " + resp);
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }


    public static String inputstreamToString(InputStream inputStream) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    StringBuilder builder = new StringBuilder();

    try {
    String line;
    while ((line = reader.readLine()) != null) {
    builder.append(line);
    }

    return builder.toString();
    }
    catch (Exception e) {
    e.printStackTrace();
    }

    return null;
    }
    }

    آخرین ویرایش به وسیله msartin : جمعه 20 مرداد 1396 در 22:50 عصر

  2. #2

    نقل قول: سوال در مورد آپلود عکس به سرور

    دوستان اگه کسی وارده بگه با چه دستوری عکس به سرور ارسال میشه؟؟؟؟
    لطف کنید کمک کنید. خیلی بهش احتیاج دارم. ممنون

  3. #3

    نقل قول: سوال در مورد آپلود عکس به سرور

    توی فایل Build.gradle در بلاک android هم این خط رو قرار بدید:


    useLibrary 'org.apache.http.legacy'


    توی فایل Build.gradle در بلاک dependencies این خط رو قرار بدید:


    compile 'dev.dworks.libs:volleyplus:+'
    compile 'com.squareup.okhttp3:okhttp:3.4.1'





    کلاس OkHttpStack:


    public class OkHttpStack implements HttpStack {

    private final OkHttpClient mClient;

    public OkHttpStack(OkHttpClient client) {
    this.mClient = client;
    }

    @Override
    public HttpResponse performRequest(Request<?> request,
    Map<String, String> additionalHeaders) throws IOException,
    AuthFailureError {

    okhttp3.Request.Builder okHttpRequestBuilder = new okhttp3.Request.Builder();
    okHttpRequestBuilder.url(request.getUrl());

    Map<String, String> headers = request.getHeaders();
    for (final String name : headers.keySet()) {
    okHttpRequestBuilder.addHeader(name, headers.get(name));
    }
    for (final String name : additionalHeaders.keySet()) {
    okHttpRequestBuilder.addHeader(name, additionalHeaders.get(name));
    }

    setConnectionParametersForRequest(okHttpRequestBui lder, request);

    okhttp3.Request okHttpRequest = okHttpRequestBuilder.build();
    Call okHttpCall = mClient.newCall(okHttpRequest);
    Response okHttpResponse = okHttpCall.execute();

    StatusLine responseStatus = new BasicStatusLine(
    parseProtocol(okHttpResponse.protocol()),
    okHttpResponse.code(), okHttpResponse.message());
    BasicHttpResponse response = new BasicHttpResponse(responseStatus);
    response.setEntity(entityFromOkHttpResponse(okHttp Response));

    Headers responseHeaders = okHttpResponse.headers();
    for (int i = 0, len = responseHeaders.size(); i < len; i++) {
    final String name = responseHeaders.name(i), value = responseHeaders
    .value(i);
    if (name != null) {
    response.addHeader(new BasicHeader(name, value));
    }
    }

    return response;
    }

    private static HttpEntity entityFromOkHttpResponse(Response r)
    throws IOException {
    BasicHttpEntity entity = new BasicHttpEntity();
    ResponseBody body = r.body();

    entity.setContent(body.byteStream());
    entity.setContentLength(body.contentLength());
    entity.setContentEncoding(r.header("Content-Encoding"));

    if (body.contentType() != null) {
    entity.setContentType(body.contentType().type());
    }
    return entity;
    }

    @SuppressWarnings("deprecation")
    private static void setConnectionParametersForRequest(
    okhttp3.Request.Builder builder, Request<?> request)
    throws IOException, AuthFailureError {
    switch (request.getMethod()) {
    case Request.Method.DEPRECATED_GET_OR_POST:
    // Ensure backwards compatibility. Volley assumes a request with a
    // null body is a GET.
    byte[] postBody = request.getPostBody();
    if (postBody != null) {
    builder.post(RequestBody.create(
    MediaType.parse(request.getPostBodyContentType()),
    postBody));
    }
    break;
    case Request.Method.GET:
    builder.get();
    break;
    case Request.Method.DELETE:
    builder.delete();
    break;
    case Request.Method.POST:
    builder.post(createRequestBody(request));
    break;
    case Request.Method.PUT:
    builder.put(createRequestBody(request));
    break;
    case Request.Method.HEAD:
    builder.head();
    break;
    case Request.Method.OPTIONS:
    builder.method("OPTIONS", null);
    break;
    case Request.Method.TRACE:
    builder.method("TRACE", null);
    break;
    case Request.Method.PATCH:
    builder.patch(createRequestBody(request));
    break;
    default:
    throw new IllegalStateException("Unknown method type.");
    }
    }

    private static ProtocolVersion parseProtocol(final Protocol p) {
    switch (p) {
    case HTTP_1_0:
    return new ProtocolVersion("HTTP", 1, 0);
    case HTTP_1_1:
    return new ProtocolVersion("HTTP", 1, 1);
    case SPDY_3:
    return new ProtocolVersion("SPDY", 3, 1);
    case HTTP_2:
    return new ProtocolVersion("HTTP", 2, 0);
    }

    throw new IllegalAccessError("Unkwown protocol");
    }

    private static RequestBody createRequestBody(Request r)
    throws AuthFailureError {
    if (r instanceof JsonRequest || r instanceof StringRequest) {
    final byte[] body = r.getBody();
    if (body == null)
    return null;

    return RequestBody
    .create(MediaType.parse(r.getBodyContentType()), body);
    } else if (r instanceof MultiPartRequest) {
    MultiPartRequest mlpRequest = (MultiPartRequest) r;
    MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);

    if (mlpRequest.getMultipartParams() != null && !mlpRequest.getMultipartParams().isEmpty()) {
    for (Object key : mlpRequest.getMultipartParams().keySet()) {
    MultiPartRequest.MultiPartParam p = (MultiPartRequest.MultiPartParam) mlpRequest.getMultipartParams().get(key);
    Log.w("param", key + ":" + p.value);
    builder.addFormDataPart(key.toString(), p.value);
    }
    }

    if (mlpRequest.getFilesToUpload() != null && !mlpRequest.getFilesToUpload().isEmpty()) {
    final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");
    for (Object key :
    mlpRequest.getFilesToUpload().keySet()) {
    Log.w("fileParam", key + ":" + mlpRequest.getFilesToUpload().get(key).toString()) ;

    File file = new File(mlpRequest.getFilesToUpload().get(key).toStri ng());
    builder.addFormDataPart(key.toString(), file.getName(),
    RequestBody.create(MEDIA_TYPE_PNG, file));
    }
    }
    return builder.build();
    }
    return null;
    }

    }




    کلاس MyApplication:


    public class MyApplication extends Application {


    private static MyApplication mInstance;
    private RequestQueue mRequestQueue;
    public static OkHttpClient client;

    @Override
    public void onCreate() {
    super.onCreate();
    mInstance = this;
    initOKHTTPClient(this);
    }


    private static final Interceptor REWRITE_CACHE_CONTROL_INTERCEPTOR = new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
    okhttp3.Request originalRequest = chain.request();
    String cacheHeaderValue = isOnline() ? "public, max-age=2419200"
    : "public, only-if-cached, max-stale=2419200";

    okhttp3.Request request = originalRequest.newBuilder().build();
    Response response = chain.proceed(request);
    return response.newBuilder().removeHeader("Pragma")
    .removeHeader("Cache-Control")
    .header("Cache-Control", cacheHeaderValue).build();

    }
    };

    public static void initOKHTTPClient(Context context) {
    Log.i("ExternalCacheDir", context.getExternalCacheDir() + "");
    Cache cache = new Cache(context.getExternalCacheDir(), 1024 * 1024 * 30);

    client = new OkHttpClient.Builder().retryOnConnectionFailure(tr ue)
    .connectTimeout(10, TimeUnit.SECONDS)
    .readTimeout(10, TimeUnit.SECONDS)
    .addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTER CEPTOR)
    .addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR)
    // .addNetworkInterceptor(RETRY_INTERCEPTOR)
    // .addInterceptor(RETRY_INTERCEPTOR)
    .cache(cache).build();

    }

    public static boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) mInstance.getSystemService(Context.CONNECTIVITY_SE RVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    return netInfo != null && netInfo.isConnectedOrConnecting();
    }

    public static synchronized MyApplication getInstance() {
    return mInstance;
    }

    public RequestQueue getRequestQueue() {
    if (mRequestQueue == null) {
    mRequestQueue = Volley.newRequestQueue(getApplicationContext(),
    new OkHttpStack(client));
    }
    return mRequestQueue;
    }


    public <T> void addToRequestQueue(Request<T> req) {
    getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
    if (mRequestQueue != null) {
    mRequestQueue.cancelAll(tag);
    }
    }

    }





  4. #4

    نقل قول: سوال در مورد آپلود عکس به سرور

    همیننطور میتونید از کتابخونه VolleyPlus برای ارسال فایل به سرور استفاده کنید.

    موفق باشید

  5. #5

    نقل قول: سوال در مورد آپلود عکس به سرور

    با تشکر از زحمات گرانقدر شما دوست عزیز
    ولی من برناممو توی ایکلیپس نوشتم و فکر میکنم ایکلیپس گریدل نداره.
    به هر حال امروز یه کد گیر آوردم که با کمی تغییرات خوشبختانه جواب گرفتم.
    برای همه میزارم شاید به دردشون بخوره :



    public int uploadFile(final String selectedFilePath) {

    int serverResponseCode = 0;

    HttpURLConnection connection;
    DataOutputStream dataOutputStream;
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary = "*****";

    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 5 * 1024 * 1024;
    File selectedFile = new File(selectedFilePath);

    String[] parts = selectedFilePath.split("/");
    final String fileName = parts[parts.length - 1];

    if ( !selectedFile.isFile()) {

    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("Source File Doesn't Exist: " + selectedFilePath);
    }
    });
    return 0;
    } else {
    try {
    FileInputStream fileInputStream = new FileInputStream(selectedFile);
    URL url = new URL(upLoadServerUri);
    connection = (HttpURLConnection) url.openConnection();
    connection.setDoInput(true);//Allow Inputs
    connection.setDoOutput(true);//Allow Outputs
    connection.setUseCaches(false);//Don't use a cached Copy
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Connection", "Keep-Alive");
    connection.setRequestProperty("ENCTYPE", "multipart/form-data");
    connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
    connection.setRequestProperty("uploaded_file", selectedFilePath);

    dataOutputStream = new DataOutputStream(connection.getOutputStream());

    dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd);
    dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""
    + selectedFilePath + "\"" + lineEnd);

    dataOutputStream.writeBytes(lineEnd);

    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    buffer = new byte[bufferSize];

    bytesRead = fileInputStream.read(buffer, 0, bufferSize);

    while (bytesRead > 0) {
    dataOutputStream.write(buffer, 0, bufferSize);
    bytesAvailable = fileInputStream.available();
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    }

    dataOutputStream.writeBytes(lineEnd);
    dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

    serverResponseCode = connection.getResponseCode();
    String serverResponseMessage = connection.getResponseMessage();

    Log.i(TAG, "Server Response is: " + serverResponseMessage + ": " + serverResponseCode);

    if (serverResponseCode == 200) {
    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    messageText.setText("File Upload completed.\n\n You can see the uploaded file here: \n\n" + "http://192.168.1.35:8080/download-files/uploads/" + fileName);
    }
    });
    }

    //closing the input and output streams
    fileInputStream.close();
    dataOutputStream.flush();
    dataOutputStream.close();

    }
    catch (FileNotFoundException e) {
    e.printStackTrace();
    runOnUiThread(new Runnable() {

    @Override
    public void run() {
    Toast.makeText(SendpicActivity.this, "File Not Found", Toast.LENGTH_SHORT).show();
    }
    });
    }
    catch (MalformedURLException e) {
    e.printStackTrace();
    Toast.makeText(SendpicActivity.this, "URL error!", Toast.LENGTH_SHORT).show();

    }
    catch (IOException e) {
    e.printStackTrace();
    Toast.makeText(SendpicActivity.this, "Cannot Read/Write File!", Toast.LENGTH_SHORT).show();
    }
    return serverResponseCode;
    }

    }

تاپیک های مشابه

  1. سوال: سوال در مورد آپلود عکس از طرف اندروید
    نوشته شده توسط msartin در بخش PHP
    پاسخ: 2
    آخرین پست: سه شنبه 24 مرداد 1396, 00:42 صبح
  2. راهنمایی در مورد آپلود عکس بر روی سرور
    نوشته شده توسط saeedhushmand در بخش Android Studio
    پاسخ: 7
    آخرین پست: یک شنبه 19 مرداد 1393, 11:24 صبح
  3. سوال در مورد آپلود عکس
    نوشته شده توسط Nariman619 در بخش PHP
    پاسخ: 4
    آخرین پست: شنبه 11 مرداد 1393, 12:33 عصر
  4. سوال: سوال در مورد آپلود درست عکس
    نوشته شده توسط mostafa612003 در بخش PHP
    پاسخ: 5
    آخرین پست: جمعه 29 دی 1391, 20:46 عصر
  5. سوال: سوال در مورد آپلود عکس ونوشتن متن
    نوشته شده توسط shahrooz_wildboy در بخش PHP
    پاسخ: 17
    آخرین پست: جمعه 12 مهر 1387, 21:24 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •