آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با پروژه Downloader ( حل شد )  

MarAnd  8 سال پیش  8 سال پیش
+1 0

سلام دوستان ، در این پروژه داخل  SD-CARD  برام فولدر  file-downloder  رو می سازه ولی داخلش فایل  sample-image.png   رو نمی سازه . هیچ اروری ندارم . روی امولیتور جدید و روی گوشی هم امتحان کردم ولی همین مشکل رو دارم . تو انجمن هم سرچ کردم ولی مشکلم حل نشد. کدها رو میزارم به نظرتون مشکل از کجاست ؟. در manifest.xml هم پرمیشن اندروید و نوشتن رو External Storage رو زدم . 

// Codes of G class : 
package com.example.n5110.mydownloader;


import android.app.Application;
import android.os.Environment;
import java.io.File;


public class G extends Application {
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_APP = DIR_SDCARD + "/file-downloader/";

@Override
public void onCreate() {
super.onCreate();
new File(DIR_APP).mkdirs();
}
}


// Codes of MainActivity class :
package com.example.n5110.mydownloader;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

FileDownloader.download("http//192.168.1.34/file-server/image2.png", G.DIR_APP + "/sample-image.png");
}
}


// Codes of FileDownloader class :
package com.example.n5110.mydownloader;


import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class FileDownloader {
public static void download(String downloadPath, String filepath) {
try {
URL url = new URL(downloadPath);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.connect();

FileOutputStream outputStream = new FileOutputStream(filepath);

InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[8 * 1024];
int len = 0;
while ((len = inputStream.read(buffer)) > 0){
outputStream.write(buffer, 0, len);
}
outputStream.close();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
+1 0
پسوند عکس های سمت سرور هم .png ان؟ (8 سال پیش)
0 0
دو تا عکس گذاشتم توش ؛ یکی png و دیگری jpg هست . (8 سال پیش)
+1 0
پسوند ها رو هماهنگ کن احتمالا مشکلت حل میشه (8 سال پیش)
+1 0
درضمن یک بار هم آدرسی که برای دانلود عکس دادی رو چک کن (شاید اونم هم مشکل داره :) ) آدرس رو کپی کن تو مرورگر ببین عکست رو میاره یا نه (8 سال پیش)
0 0
ممنونم ؛ پسوند ها رو یکی کردم ولی بازم نساخت . ادرس هم درسته چک کردم . (8 سال پیش)
0 0
دوستان یه فولدر دیگه هم ساختم ولی simple-image.png توش ساخته نشد بازززز !! (8 سال پیش)
 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
MarAnd  8 سال پیش
0 0

فولدر هست ولی فایلی توش ساخته نشده . 

0 0
دوستان کسی به این مشکل برنخورده ؟ ایده ای ندارین ؟ ممنون. (8 سال پیش)
پاسخ به سوال 
MarAnd  8 سال پیش
0 0

 پاسخ صحیح

خب بالاخره بعد از کلی جستجو مشکل کارم پیدا شد اینجا میزارم تا در اینده اگه کسی بهش برخورد در وقتش صرفه جویی بشه :) 

ایراد کد اینجا بود که من در هیچ کدوم از کلاس هام برای ارسال درخواستم از Thread استفاده نکرده بودم که AsyncTask این کار رو انجام میده و در واقع صرفا یک ترد باز می کنیم تا عملیات گرفتن انجام بشه و کلاس MainActivity به این شکل تغییر می کنه : 

package com.example.n5110.mydownloader;


import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new DownloadFile().execute();
}


private class DownloadFile extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
FileDownloader.download("http://192.168.1.34/file-server/image2.jpg", G.DIR_APP + "sample-image.jpg");
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Toast.makeText(G.context, "Finish", Toast.LENGTH_SHORT).show();
}
}
}



پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .