How to upload file using Volley library in android?

后端 未结 1 417
遥遥无期
遥遥无期 2020-11-28 11:01

I already have a sub class of Request that is used for http post to the server. The problem is, I have no idea on how can I add a parameter for a file. Posting string to the

相关标签:
1条回答
  • 2020-11-28 11:11

    may this method helps you:

    public int uploadFile(String sourceFileUri, String fileName)
    {
        String upLoadServerUri = "your_api_url";
    
        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(sourceFileUri); 
        //errMsg=Environment.getExternalStorageDirectory().getAbsolutePath();
        if (!sourceFile.isFile())
        {
            Log.e("uploadFile", "Source File Does not exist");
            return 0;
        }
        try {
            // open a URL connection to the Servlet
            FileInputStream fileInputStream = new FileInputStream(sourceFile);
            URL url = new URL(upLoadServerUri);
            conn = (HttpURLConnection) url.openConnection(); // Open a HTTP  connection to  the URL
            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);
            //conn.setRequestProperty("pid", "4");
            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);
    
            bytesAvailable = fileInputStream.available(); // create a buffer of  maximum size
    
            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)
            {
                getActivity().runOnUiThread(new Runnable()
                {
                    public void run() {
                        Toast.makeText(context, "Il y a une erreur l'hors du trasfert de l'image.", Toast.LENGTH_SHORT).show();
                    }
                });  
            }
    
            //close the streams //
            fileInputStream.close();
            dos.flush();
            dos.close();
    
        } catch (MalformedURLException ex) {  
            // dialog.dismiss();  
            ex.printStackTrace();
            Toast.makeText(context, "MalformedURLException", Toast.LENGTH_SHORT).show();
            Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
        } catch (Exception e) {
            //  dialog.dismiss();  
            e.printStackTrace();
            Toast.makeText(context,errMsg+ "Exception : " + e.getMessage(), Toast.LENGTH_SHORT).show();
            Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e);  
        }
        //  dialog.dismiss();         
        return serverResponseCode;  
    }
    
    0 讨论(0)
提交回复
热议问题