मैं एंड्रॉइड से एज़ूर ब्लॉब स्टोरेज में छवि अपलोड करने का प्रयास करता हूं। मैं इसे जावा से इस तरह से कर सकता हूं

 CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

        // Create the blob client.
        CloudBlobClient blobClient = storageAccount.createCloudBlobClient();

        CloudBlobContainer container = blobClient.getContainerReference("mycontainer");

        final String filePath = "C:\\Users\\icon.jpg";

        CloudBlockBlob blob = container.getBlockBlobReference("1.jpg");
        File source = new File(filePath);
        blob.upload(new FileInputStream(source), source.length());

लेकिन अगर मैं फ़ाइलपथ को "सामग्री://मीडिया/बाहरी/छवियों/मीडिया/12" में बदलता हूं, तो एंड्रॉइड में मेरे पास FileNotFoundException है। मैं एंड्रॉइड से छवियों को कैसे अपलोड कर सकता हूं?

-1
Gaya Babayan 13 अप्रैल 2017, 17:41

2 जवाब

सबसे बढ़िया उत्तर
            CloudBlockBlob blob = container.getBlockBlobReference(UserInfo.username + ".jpg");
            BlobOutputStream blobOutputStream = blob.openOutputStream();
            ContentResolver cr = context.getContentResolver();
            InputStream s = cr.openInputStream(uri);
            byte[] arr = convertInputStreamToByteArray(s);
            ByteArrayInputStream inputStream = new ByteArrayInputStream(arr);
            int next = inputStream.read();
            while (next != -1) {
                blobOutputStream.write(next);
                next = inputStream.read();
            }
            blobOutputStream.close();

स्ट्रीम को कन्वर्ट इस तरह है

 public byte[] convertInputStreamToByteArray(InputStream inputStream)
    {
        byte[] bytes= null;

        try
        {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();

            byte data[] = new byte[1024];
            int count;

            while ((count = inputStream.read(data)) != -1)
            {
                bos.write(data, 0, count);
            }

            bos.flush();
            bos.close();
            inputStream.close();

            bytes = bos.toByteArray();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return bytes;
    }
0
Anastasia 13 अप्रैल 2017, 18:44

अंतिम स्ट्रिंग फ़ाइलपाथ = "सी: \ उपयोगकर्ता \ icon.jpg"

मुझे बहुत संदेह है कि यह आपके डिवाइस पर मौजूदा फ़ाइल की ओर इशारा करता है।

संपादित करें

लेकिन अगर मैं फ़ाइलपथ को सामग्री में बदलता हूं://मीडिया/बाहरी/छवियां/मीडिया/12

यह फ़ाइल पथ नहीं है। content:// Uri का उपयोग करने के लिए, एक ContentResolver और openInputStream() और openOutputStream() जैसी विधियों का उपयोग करने की आवश्यकता होती है।

1
Marcin Orlowski 13 अप्रैल 2017, 17:53