Android 为什么我得到的源文件不存在:在我的代码中?

Android 为什么我得到的源文件不存在:在我的代码中?,android,android-intent,file-upload,Android,Android Intent,File Upload,我目前正在制作一个与音频文件一起工作的应用程序,我需要实现用户选择存储在SD卡上的文件的功能 我想从后端选择一个文件,而不是按用户选择文件。。 我在这里看到过类似的帖子,但没有一篇专门回答我的问题。基本上这就是当用户点击上传按钮时我正在做的代码: public class MainActivity extends Activity implements OnClickListener { private TextView messageText; private Butt

我目前正在制作一个与音频文件一起工作的应用程序,我需要实现用户选择存储在SD卡上的文件的功能 我想从后端选择一个文件,而不是按用户选择文件。。 我在这里看到过类似的帖子,但没有一篇专门回答我的问题。基本上这就是当用户点击上传按钮时我正在做的代码:

   public class MainActivity extends Activity implements OnClickListener {

    private TextView messageText;
    private Button uploadButton, btnselectpic, btnselectaudio, btnselectvideo;
    private ImageView imageview;
    private int serverResponseCode = 0;
    private ProgressDialog dialog = null;

    private String upLoadServerUri = null;
    private String filepath = null;
        int FLAG = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
filepath=Environment.getExternalStorageDirectory()+"/Auto call record/Incomimg/";
        uploadButton = (Button) findViewById(R.id.uploadButton);
        messageText = (TextView) findViewById(R.id.messageText);
        //btnselectpic = (Button) findViewById(R.id.button_selectpic);
        btnselectaudio = (Button) findViewById(R.id.button_selectaudio);
//      btnselectvideo = (Button) findViewById(R.id.button_selectvideo);
        imageview = (ImageView) findViewById(R.id.imageView_pic);
        if (filepath != null) {

            new Thread(new Runnable() {
                public void run() {
                    uploadFile(filepath);
                }
            }).start();
        } 
        else {
            Toast.makeText(MainActivity.this, "Please try again !!!",
                    Toast.LENGTH_LONG).show();
        }
        //btnselectpic.setOnClickListener(this);
btnselectaudio.setOnClickListener(this);
//      btnselectvideo.setOnClickListener(this);
        uploadButton.setOnClickListener(this);
        upLoadServerUri = "http://sstecindia.com/demo/map/upload/upload_to_server.php";
    }

    @Override
    public void onClick(View arg0) {
        /*if (arg0 == btnselectpic) {
            FLAG = 1;
            Intent intent = new Intent();
            // intent.setType("video/*");
            // intent.setType("audio/*");
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 1);

            if (btnselectpic.isPressed()) {
                Drawable bitmap = getResources().getDrawable(R.drawable.image);
                imageview.setImageDrawable(bitmap);
            }

        } 
        else */if (arg0 == btnselectaudio) {
            FLAG = 1;
            Intent intent = new Intent();
            // intent.setType("video/*");
            intent.setType("audio/*");
            // intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 1);

            if (btnselectaudio.isPressed()) {
                Drawable bitmap = getResources().getDrawable(R.drawable.audio);
                imageview.setImageDrawable(bitmap);
            }

        }/*else if (arg0 == btnselectvideo) {
            FLAG = 1;
            Intent intent = new Intent();
            intent.setType("video/*");
            // intent.setType("audio/*");
            // intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 1);

            if (btnselectvideo.isPressed()) {
                Drawable bitmap = getResources().getDrawable(R.drawable.video);
                imageview.setImageDrawable(bitmap);
            }


            } 
*/          else if (arg0 == uploadButton) {

    /*Intent intent = new Intent();
    intent.setType("audio/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(
            Intent.createChooser(intent, "Complete action using"), 1);*/
            if (FLAG == 0) {
                Toast.makeText(
                        MainActivity.this,
                        "Please select atleast one image or audio or video !!!",
                        Toast.LENGTH_LONG).show();
            } else {
                if (filepath != null) {

                    new Thread(new Runnable() {
                        public void run() {
                            uploadFile(filepath);
                        }
                    }).start();
                } 
                else {
                    Toast.makeText(MainActivity.this, "Please try again !!!",
                            Toast.LENGTH_LONG).show();
                }
            }
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1 && resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();
            filepath = getPath(selectedImageUri);
            Bitmap bitmap = BitmapFactory.decodeFile(filepath);
            imageview.setImageBitmap(bitmap);

            messageText.setText("Uploading file path:" + filepath);

        }
    }

    @SuppressWarnings("deprecation")
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

    public int uploadFile(final String sourceFileUri) {
        File dir = Environment.getExternalStorageDirectory();
        File yourFile = new File(dir,"/Auto call record/Incomimg/+91881884011123-09-2015 01-441453941805.amr");


        String fileName = yourFile.getPath();

        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 = yourFile;

        if (!sourceFile.isFile()) {



            Log.e("uploadFile", "Source File not exist :" + filepath);

            runOnUiThread(new Runnable() {
                public void run() {
                    messageText.setText("Source File not exist :" + filepath);
                }
            });

            return 0;

        } else {
            try {
                FileInputStream fileInputStream = new FileInputStream(
                        sourceFile);
                URL url = new URL(upLoadServerUri);
                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)
                serverResponseCode = conn.getResponseCode();
                String serverResponseMessage = conn.getResponseMessage();

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

                if (serverResponseCode == 200) {

                    runOnUiThread(new Runnable() {
                        public void run() {
                            String msg = "File Upload Completed.\n\n See uploaded file here : \n\n"
                                    + " c:/wamp/www/echo/uploads";
                            messageText.setText(msg);
                            Toast.makeText(MainActivity.this,
                                    "File Upload Complete.", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                }

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

            } catch (MalformedURLException ex) {

                dialog.dismiss();
                ex.printStackTrace();

                runOnUiThread(new Runnable() {
                    public void run() {
                        messageText
                                .setText("MalformedURLException Exception : check script url.");
                        Toast.makeText(MainActivity.this,
                                "MalformedURLException", Toast.LENGTH_SHORT)
                                .show();
                    }
                });

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

                dialog.dismiss();
                e.printStackTrace();

                runOnUiThread(new Runnable() {
                    public void run() {
                        messageText.setText("Got Exception : see logcat ");
                        Toast.makeText(MainActivity.this,
                                "Got Exception : see logcat ",
                                Toast.LENGTH_SHORT).show();
                    }
                });
                Log.e("Upload file to server Exception",
                        "Exception : " + e.getMessage(), e);
            }
            dialog.dismiss();
            return serverResponseCode;
        }
    }
}

`

如果我听你的问题,你可以从定义的文件夹中检索所有扩展名为.mp3的文件的列表。在列表上运行循环并执行所需的操作。您可以在此处自由更改扩展名。。例如.amr、.aac等


文件将返回一个文件数组。您可以在其上循环。

File dir=Environment.getExternalStorageDirectory;
File yourFile=new Filedir,/Auto call record/outing/+91882385812528-09-2015 02-31874159794.amr

最终字符串文件[]=root.listimageFilter;imageFilter是什么类型的?它只是FilenameFilter imageFilter的一个变量名。。。它将过滤该目录中的所有文件,并将name.endsWith.mp3与.mp3文件进行比较。如果需要,可以将其更改为音频过滤器。要上载多少文件?您是否有要上载的特定文件名?从oncreate调用前两行,并将FileFilter方法作为单独的方法放置。files是所有文件的数组。您可以从中获取任何文件并上载。这些文件应自动选择,用户无需手动操作
File root = new File("/sdcard/MyCollection");
final String files[] = root.list(imageFilter);
FilenameFilter imageFilter = new FilenameFilter() {
    File f;
    public boolean accept(File dir, String name) {
    if(name.endsWith(".mp3")) {
            return true;
        }
        f = new File(dir.getAbsolutePath()+"/"+name);

        return f.isDirectory();
    }
};