इसके माध्यम से साझा किया गया


Azure ब्लॉब स्टोरेज पर फ़ाइलें अपलोड करने के लिए वेब API का उपयोग करें

यह मार्गदर्शिका दर्शाती है कि Azure फ़ाइल API को कैसे कार्यान्वित किया जाए। ये चरण आपकी वेबसाइट के उपयोगकर्ताओं या आगंतुकों को Azure में संग्रहीत अनुलग्नकों को देखने, संपादित करने, बनाने और हटाने की शक्ति प्रदान करते हैं।

नोट

  • Azure 10 GB तक का फ़ाइल आकार समर्थित है।
  • आप इस उदाहरण में दिए गए चरणों का पालन करते हुए स्तंभ नाम बदल सकते हैं या किसी भिन्न तालिका का उपयोग कर सकते हैं।
  • ये API केवल पहले से बनाए गए रिकॉर्ड्स के लिए ही काम करते हैं। इन API का उपयोग करके अपलोड किए गए अनुलग्नक उस रिकॉर्ड से लिंक किए जाएंगे।
  • ये API नोट (एनोटेशन) इकाई पर कई अपडेट करेंगे क्योंकि फाइलें खंडों में अपलोड की जाती हैं।

पूर्वावश्यकताएँ

यह वॉक-थ्रू फ़ाइल टेस्ट नामक एक कस्टम तालिका पर निर्भर करता है। आप समान नाम से एक कस्टम तालिका बना सकते हैं या किसी अन्य तालिका का उपयोग करना चुन सकते हैं। का उपयोग करके टेबल बनाएं और संपादित करें में कस्टम टेबल बनाने के तरीके के बारे में अधिक जानें Power Apps.

चरण 1: साइट सेटिंग्स बनाएँ

इससे पहले कि आप पोर्टल की Azure फ़ाइल API का उपयोग कर सकें, आपको पोर्टल प्रबंधन ऐप के साथ आवश्यक साइट सेटिंग्स को सक्षम करना होगा। ... ... साइट सेटिंग उस तालिका पर निर्भर करती है जिसे आप Azure फ़ाइल API के साथ इंटरैक्ट करते समय उपयोग करना चाहते हैं।

  1. पोर्टल प्रबंधन अनुप्रयोग खोलें.

  2. पोर्टल प्रबंधन ऐप के बाएँ फलक पर, साइट सेटिंग चुनें.

  3. नया चुनें.

  4. नाम के लिए, साइट/फ़ाइलप्रबंधन/सक्षमवेबएपीआई दर्ज करें.

  5. वेबसाइट सूची में, अपना वेबसाइट रिकॉर्ड चुनें.

  6. मान के लिए, सत्य प्रविष्ट करें।

  7. सहेजें और बंद करें चुनें.

  8. निम्नलिखित साइट सेटिंग जोड़ें:

    साइट सेटिंग नाम DefaultValue विवरण अनिवार्य
    साइट/फ़ाइल प्रबंधन/WebAPI सक्षम करें फ़ाइल प्रबंधन वेब API सक्षम करता है हां
    साइट/फ़ाइल प्रबंधन/ब्लॉब स्टोरेज खाता नाम संग्रहण खाते का नाम हां
    साइट/फ़ाइल प्रबंधन/ब्लॉबस्टोरेजकंटेनरनाम कंटेनर का नाम हां
    साइट/फ़ाइल प्रबंधन/समर्थितफ़ाइल प्रकार फ़ाइल प्रकारों के अल्पविराम से अलग किए गए मान. उदाहरण के लिए: .jpeg,.jpg हां
    साइट/फ़ाइल प्रबंधन/समर्थितMimeType ; अलग किए गए माइम प्रकार हां
    साइट/फ़ाइल प्रबंधन/अधिकतमफ़ाइल आकार 1048576 (1 जीबी) अधिकतम फ़ाइल आकार KB में No
    साइट/फ़ाइल प्रबंधन/डाउनलोडViaSASUri सत्य (डिफ़ॉल्ट रूप से सक्षम) यह निर्णय लेने के लिए कि फ़ाइल डाउनलोड करने के लिए SAS URI का उपयोग करना है या नहीं No
    साइट/फ़ाइल प्रबंधन/डाउनलोडSASUriExpiryTimeSpan 00:10:00 (10 मिनट) एसएएस यूआरआई के लिए अधिकतम समाप्ति समय अवधि (यदि 7 सत्य है तो आवश्यक) No
    साइट/फ़ाइल प्रबंधन/डाउनलोडChunkSizeInKB 4096 (4 एमबी) डाउनलोड करने के लिए खंड आकार तय करने के लिए (यदि 7 गलत है तो आवश्यक) No
  9. एनोटेशन (नोट्स) के लिए वेब API सक्षम करने के लिए ये अतिरिक्त साइट सेटिंग्स जोड़ें:

    साइट सेटिंग नाम मान
    Webapi/एनोटेशन/सक्षम true
    Webapi/एनोटेशन/फ़ील्ड *

चरण 2: अनुमतियाँ कॉन्फ़िगर करें

आपको अनुमतियाँ कॉन्फ़िगर करनी होंगी ताकि उपयोगकर्ता Azure फ़ाइल API सुविधा का उपयोग कर सकें। इस उदाहरण में, आपको API का उपयोग करने वाली एक नई वेब भूमिका सेट अप या बनानी होगी. इसके बाद, आप फ़ाइल परीक्षण और नोट तालिकाओं के लिए तालिका अनुमतियाँ जोड़ते हैं और तालिका अनुमतियों को वेब भूमिका से संबद्ध करते हैं. अंत में, आप उपयोगकर्ताओं को API का उपयोग करने की अनुमति देने के लिए उन्हें वेब भूमिका सौंपते हैं।

नोट

एपीआई प्रमाणीकृत उपयोगकर्ता या अनाम वेब भूमिका के वेब भूमिका संदर्भ से तालिका अनुमतियों का अनुसरण करता है। ... इस बात पर विचार करें कि क्या आपके उपयोगकर्ताओं के पास पहले से ही एक वेब भूमिका है जिसके पास आपकी वेबसाइट में API द्वारा आवश्यक विशिष्ट तालिकाओं तक पहुंच है। आपको API का उपयोग करने के लिए अतिरिक्त वेब भूमिकाएँ बनाने की आवश्यकता नहीं है।

एक वेब भूमिका बनाएँ

यदि आपके पास आवश्यक तालिका के लिए अनुमतियों वाली वेब भूमिका नहीं है, तो वेब भूमिका बनाने और तालिका अनुमतियाँ असाइन करने के लिए निम्न चरणों का उपयोग करें.

  1. पोर्टल प्रबंधन अनुप्रयोग खोलें.

  2. बाएँ फलक में, सुरक्षा अनुभाग में, वेब भूमिकाएँ चुनें.

  3. नया चुनें.

  4. नाम के लिए, Azure फ़ाइल API उपयोगकर्ता या कोई भी नाम दर्ज करें जो इस कार्यक्षमता तक पहुँचने वाले उपयोगकर्ता की भूमिका को सबसे अच्छी तरह से दर्शाता हो।

  5. वेबसाइट सूची में, अपना वेबसाइट रिकॉर्ड चुनें.

  6. सहेजें चुनें.

तालिका अनुमतियाँ बनाएँ

  1. Power Pages डिज़ाइन स्टूडियो खोलें.

  2. सुरक्षा कार्यस्थान का चयन करें.

  3. सुरक्षा अनुभाग के अंतर्गत, तालिका अनुमतियाँ चुनें.

  4. नई अनुमति चुनें.

  5. नाम के लिए, फ़ाइल परीक्षण तालिका अनुमति दर्ज करें.

  6. तालिका नाम सूची में, फ़ाइल परीक्षण (cr463_filetest) का चयन करें.

  7. पहुँच प्रकार सूची में, वैश्विक पहुँच का चयन करें.

  8. पढ़ें और जोड़ें विशेषाधिकारों का चयन करें.

  9. + भूमिकाएँ जोड़ें चुनें और पहले बनाई गई वेब भूमिका का चयन करें.

  10. सहेजें चुनें.

  11. नोट (एनोटेशन) तालिका के लिए लिखें, पढ़ें, बनाएं, जोड़ें विशेषाधिकारों के साथ एक और अनुमति बनाने के लिए समान चरणों का पालन करें और समान वेब भूमिका जोड़ें।

वेब भूमिका में संपर्क जोड़ें

  1. पोर्टल प्रबंधन अनुप्रयोग खोलें.

  2. बाएँ फलक में, सुरक्षा अनुभाग में, संपर्क का चयन करें.

  3. इस उदाहरण में API के लिए जिस संपर्क का आप उपयोग करना चाहते हैं उसे चुनें.

नोट

यह संपर्क इस उदाहरण में API के परीक्षण के लिए उपयोग किया गया उपयोगकर्ता खाता है। अपने पोर्टल में सही संपर्क का चयन करना सुनिश्चित करें.

  1. संबंधित>वेब भूमिकाएँ का चयन करें. सत्यापित करें कि आप पोर्टल संपर्क फ़ॉर्म का उपयोग कर रहे हैं. यदि आप प्रबंधन ऐप का उपयोग करते हैं, तो वेब भूमिकाएँ सबग्रिड सामान्य टैब के नीचे स्थित है। Power Pages

  2. मौजूदा वेब भूमिका जोड़ें का चयन करें.

  3. आपके द्वारा पहले बनाई गई Azure फ़ाइल API उपयोगकर्ता भूमिका का चयन करें.

  4. जोड़ें चुनें.

  5. सहेजें और बंद करें चुनें.

Microsoft Entra ऐप के लिए भूमिका आधारित अनुमतियाँ जोड़ें

  1. Azure में लॉग इन करें जहां स्टोरेज खाता बनाया गया था।

  2. संसाधन समूह पर जाएँ, जिसमें संग्रहण खाता शामिल है.

  3. एक्सेस कंट्रोल (IAM)>जोड़ें>भूमिका असाइनमेंट जोड़ें चुनें।

  4. रीडर भूमिका का चयन करें और फिर अगला का चयन करें.

  5. उपयोगकर्ता, समूह, या सेवा प्रिंसिपल चुनें और फिर + सदस्य चुनेंचुनें.

  6. दाईं ओर के पैनल में, अपनी साइट का नाम खोजकर पोर्टल एंटरप्राइज़ एप्लिकेशन चुनें और फिर Select चुनें। आवेदन का नाम निम्नलिखित प्रारूप में है:

    Portals-<site name>

  7. समीक्षा + असाइन करें>समीक्षा + असाइन करें चुनें.

  8. स्टोरेज खाते पर जाएं और फिर एक्सेस कंट्रोल (IAM) >जोड़ें >भूमिका असाइनमेंट जोड़ें का चयन करें.

  9. स्टोरेज ब्लॉब डेटा सहयोगी भूमिका का चयन करें और फिर अगला का चयन करें.

  10. उपयोगकर्ता, समूह, या सेवा प्रिंसिपल चुनें और फिर + सदस्य चुनेंचुनें.

  11. दाईं ओर, अपना साइट नाम खोजकर पोर्टल एंटरप्राइज़ एप्लिकेशन का चयन करें और फिर Select का चयन करें।

  12. समीक्षा + असाइन करें>समीक्षा + असाइन करें चुनें.

चरण 3: वेबपृष्ठ बनाएँ

अब जब आपने Azure फ़ाइल API सक्षम कर लिया है और उपयोगकर्ता अनुमतियाँ कॉन्फ़िगर कर ली हैं, तो फ़ाइल परीक्षण तालिका के लिए इकाई सूची वाला एक वेबपृष्ठ बनाएँ।

  1. Power Pages डिज़ाइन स्टूडियो खोलें.

  2. पृष्ठ कार्यस्थान में, + पृष्ठ का चयन करें, और पृष्ठ जोड़ने के अन्य तरीके का चयन करें.

  3. पृष्ठ जोड़ें संवाद में, पृष्ठ नाम के लिए, फ़ाइल परीक्षण पृष्ठ दर्ज करें और फिर रिक्त से प्रारंभ करें का चयन करें.

  4. जोड़ें चुनें.

  5. सूची चुनें और फिर एक नई सूची जोड़ें या फ़ाइल परीक्षण तालिका के लिए एक मौजूदा सूची चुनें।

    रिकॉर्ड देखने, संपादित करने, बनाने और हटाने के लिए निम्नलिखित नमूना कोड के साथ अनुलग्नकों के लिए एक पृष्ठ बनाएं।

  6. Power Pages डिज़ाइन स्टूडियो खोलें.

  7. पृष्ठ कार्यस्थान में, + पृष्ठ का चयन करें, और पृष्ठ जोड़ने के अन्य तरीके का चयन करें.

  8. पृष्ठ जोड़ें संवाद में, पृष्ठ नाम के लिए, अनुलग्नक दर्ज करें और रिक्त से प्रारंभ करें का चयन करें.

  9. जोड़ें चुनें.

  10. ऊपरी दाएँ कोने में कोड संपादित करें विकल्प का चयन करें।

  11. Visual Studio Code खोलें चुनें.

  12. निम्नलिखित नमूना कोड स्निपेट को कॉपी करें और इसे पेज सेक्शन के <div></div> टैग के बीच पेस्ट करें.

    <style>
    .containerforfile
    {
        display:flex;
        margin-bottom:30px; 
    }
    .btn-for-file
    {
        margin-right:10px;
    }
    .file-name
    {
        padding-top:6px;
    }
    .fileinput
    {
        margin-right:10px;
    }
    .container-progress
    {   
         width: 70%;
         max-width: 400px;  
         margin-top: 10px;   
         position: relative;
    } 
    .parent-progress
    {    
        width: 100%;    
        background-color: #2f5fef;    
        height: 30px;    
        margin-top: 25px;    
        margin-bottom: 20px;
    } 
    .child-progress
    {    
        width: 0%;    
        background-color: #53b453;    
        height: 100%;
    } 
    .prog 
    {    position: absolute;  
      display: block;   
       right: 0; 
    }
    
    #attachments{
        font-family: Arial, Helvetica, sans-serif;
        border-collapse: collapse;
        width: 100%;
      }
      #attachments td,
      #attachments th {
        border: 1px solid #ddd;
        padding: 8px;
      }
      #attachments tr:nth-child(even) {
        background-color: #f2f2f2;
      }
      #attachments tr:hover {
        background-color: #ddd;
      }
      #attachments th {
        padding-top: 12px;
        padding-bottom: 12px;
        text-align: left;
        background-color: #2f5fef;
        color: white;
      }
    </style>
    
    <script>
    function selectFile()
    {var child = document.getElementsByClassName("child-progress")[0];
                                    var progSpan = document.getElementsByClassName("prog")[0];
                                        child.style.width = 0 + "%";
                                    progSpan.innerHTML = 0 + "%";
        var elementToChooseFile = document.getElementById("fileinput");
        elementToChooseFile.click();
    }
    function chooseFile()
    {
        var elementToChooseFile = document.getElementById("fileinput");
        var filename =elementToChooseFile.files[0].name;
        var elementforfilename = document.getElementById("filename");
        elementforfilename.innerText = filename;
        uploadFileinChunks();
    }
    
    (function(webapi, $){
                    function safeAjax(ajaxOptions) {
                        var deferredAjax = $.Deferred();
    
                        shell.getTokenDeferred().done(function (token) {
                        // add headers for AJAX
                        if (!ajaxOptions.headers) {
                        $.extend(ajaxOptions, {
                            headers: {
                                "__RequestVerificationToken": token
                            }
                        }); 
                        } else {
                        ajaxOptions.headers["__RequestVerificationToken"] = token;
                    }
                    $.ajax(ajaxOptions)
                        .done(function(data, textStatus, jqXHR) {
                            validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve);
                        }).fail(deferredAjax.reject); //AJAX
                }).fail(function () {
                    deferredAjax.rejectWith(this, arguments); // on token failure pass the token AJAX and args
                });
    
                return deferredAjax.promise();  
            }
            webapi.safeAjax = safeAjax;
        })(window.webapi = window.webapi || {}, jQuery)
    
    function getFileName(fileName)
    {
        return fileName.replace(/\.azure\.txt$/, '');
    }
    function downloadFile()
    {
        var entityName = document.getElementById("entity_name").value;
        var entityId = document.getElementById("entity_id").value;
        var url = "/_api/file/download/" + entityName + "(" + entityId + ")/blob/$value";
        window.open(url, "_blank");
    }
    
    function uploadFileinChunks()
    {
        var filesizeelement = document.getElementById("filesize");
        var starttimelement = document.getElementById("starttime");
        starttimelement.innerText = new Date().toLocaleString();
        var endtimeelement = document.getElementById("endtime");
        var entityName = "cr463_filetest";
        var entityId = window.location.search.substring(4);
        var url = "/_api/file/InitializeUpload/" + entityName + "(" + entityId + ")/blob"
        var elementToChooseFile = document.getElementById("fileinput");
        var filename = "";
        if (elementToChooseFile.files.length > 0) {
            filename = elementToChooseFile.files[0].name;
        filesizeelement.innerText = elementToChooseFile.files[0].size / 1048576;
            const encodedFileName = encodeURIComponent(filename);
            filename = encodedFileName;
        }
        if (elementToChooseFile.files.length > 0 && elementToChooseFile.files[0].size > 0)
        {
                const chunkSize = 50*1024 *1024;
                let numberOfBlocks;
                let token;
                if (elementToChooseFile.files[0].size % chunkSize == 0)
                {
                    numberOfBlocks = elementToChooseFile.files[0].size / chunkSize;
                }
                else
                {
                    numberOfBlocks = parseInt(elementToChooseFile.files[0].size / chunkSize, 10) + 1;
                }
                webapi.safeAjax({
                    type: "POST",
                    url: url,//replace this with url 
                    headers: { "x-ms-file-name": elementToChooseFile.files[0].name, "x-ms-file-size": elementToChooseFile.files[0].size },
                    contentType: "application/octet-stream",
                    processData: false,
                    data: {},
                    success: function (response, status, xhr)
                    {
                        token = response;
                        uploadFileChunk(0);
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown)
                    {
                        alert(XMLHttpRequest.responseText);
                    }
                });
    
                function uploadFileChunk(blockno)
                {
                    var fileReader = new FileReader();
    
                    if (blockno < numberOfBlocks)
                    {
                        var end = (blockno * chunkSize + chunkSize) > elementToChooseFile.files[0].size ? blockno * chunkSize + elementToChooseFile.files[0].size % chunkSize : blockno * chunkSize + chunkSize;
                        var content = elementToChooseFile.files[0].slice(blockno * chunkSize, end);
                        fileReader.readAsArrayBuffer(content);
                    }
                    fileReader.onload = function ()
                    {
                        webapi.safeAjax({
                            type: "PUT",
                            url: "/_api/file/UploadBlock/blob?offset=" + (blockno * chunkSize) + "&fileSize=" + elementToChooseFile.files[0].size + "&chunkSize=" + chunkSize + "&token=" + token,
                            headers: { "x-ms-file-name": elementToChooseFile.files[0].name },
                            contentType: "application/octet-stream",
                            processData: false,
                            data: content,
                            success: function (res) {
                                var child = document.getElementsByClassName("child-progress")[0];
                                    var progSpan = document.getElementsByClassName("prog")[0];
                                    var percentComplete = ((parseFloat(end) / parseFloat(elementToChooseFile.files[0].size)) * 100).toFixed(2);
    
                                    child.style.width = percentComplete + "%";
                                    progSpan.innerHTML = percentComplete + "%";
                                    if (percentComplete == 100) {
                                        var table = document.getElementById('attachments');
                                        if(table.hidden)
                                        {
                                        var divForNoAttachment = document.getElementById("no-attachment-found");
                                        divForNoAttachment.hidden = true;
                                        table.hidden = false;
                                        }
                                        var row = document.createElement("tr"); 
                                        row.id = token;
                                        row.innerHTML=`<td><a target="_blank" href="/_api/file/download/annotation(` + token + `)/blob/$value" >` + elementToChooseFile.files[0].name + `</a></td>
                                                <td>`+  new Date().toLocaleString() + `</td>     
                                                <td><button class="btn btn-default" onClick="deleteFile('` + token + `');"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></button></td>`;
                                        table.firstElementChild.nextElementSibling.appendChild(row);
                                        endtimeelement.innerText = new Date().toLocaleString();
                                    }
                                uploadFileChunk(blockno + 1);
                            },
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                alert(XMLHttpRequest.responseText);
                            }
                        });
                    }
                }
        }
        else
        {
        alert("no file chosen");
        }
    }
    
    function loadAllAttachments()
    {
        var fetchXmlQuery = `<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
      <entity name="annotation">
        <attribute name="filename" />
        <attribute name="annotationid" />  
        <attribute name="createdon"/>
        <attribute name="objectid" />
        <attribute name="objecttypecode" />
        <filter type="and">
        <condition attribute="filename" operator="like" value="%.azure.txt" />
        </filter>
        <link-entity name="cr463_filetest" from="cr463_filetestid" to="objectid" link-type="inner" alias="ad">
        <filter type="and">
        <condition attribute="cr463_filetestid" operator="eq" value="{` + window.location.search.substring(4) +`}"/>
    </filter>
    </link-entity>
      </entity>
    </fetch>`;
    
    var req = new XMLHttpRequest();
    
    req.open("GET", "/_api/annotations?fetchXml=" +  
        encodeURIComponent(fetchXmlQuery), true);
    
    req.setRequestHeader("Accept", "application/json");
    
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    
    req.onreadystatechange = function ()
    {
        if (this.readyState === 4)
        {
            this.onreadystatechange = null;
            if (this.status === 200)
            {
                var returned = JSON.parse(this.responseText);
                var results = returned.value;
                var loading = document.getElementById('loading');
                if (results.length == 0)
                {
                    var divForNoAttachment = document.getElementById("no-attachment-found");
                        divForNoAttachment.hidden = false;
                }
                else
                {
                for (var i = 0; i < results.length; i++)
                {
                    var table = document.getElementById('attachments');
                    if(table.hidden)
                    {
                        var divForNoAttachment = document.getElementById("no-attachment-found");
                        divForNoAttachment.hidden = true;
                        table.hidden = false;
                    }
                    var row = document.createElement("tr"); 
    
                    var fileName = results[i]["filename"];
                    fileName = fileName.replace(".azure.txt", "");
                    var createdOn = results[i]["createdon"];
                    var annotationid = results[i]["annotationid"];
                    row.id = annotationid;
                    row.innerHTML=`<td><a target="_blank" href="/_api/file/download/annotation(` + annotationid + `)/blob/$value" >` + fileName + `</a></td>
                    <td>`+  createdOn + `</td>     
                    <td><button class="btn btn-default" onClick="deleteFile('` + annotationid + `');"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></button></td>`;
                    table.firstElementChild.nextElementSibling.appendChild(row);
                }
                }
                loading.hidden= true;
            }
            else
            {
                alert(this.status);
            }
        }
    };
    req.send();
    }
    
    document.addEventListener("DOMContentLoaded", function(){
        loadAllAttachments();
    });
    function deleteFile(entityId)
    {
        var entityName = "annotation";
        var url = "/_api/file/delete/" + entityName + "(" + entityId + ")/blob/$value";
        webapi.safeAjax({
            url: url,
            type: "DELETE",
            success: function(){
    
                var row = document.getElementById(entityId);     
                row.parentNode.removeChild(row);
                var table = document.getElementById('attachments');
    
                if(table.hidden == false && table.tBodies[0].children.length == 0)
                { 
                var divForNoAttachment = document.getElementById("no-attachment-found");
                    divForNoAttachment.hidden = false;
                    table.hidden = true;
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown)
            {
                alert(XMLHttpRequest.responseText); 
            }
        });
    }
    </script> 
    <div style="margin-left:40px;"> 
    <div class="containerforfile" style="display: flex;"> 
      <input type="file" multiple="true" id="fileinput" onchange="chooseFile()" style="display: none;"> 
      <button type="button" id="button-to-choosefile" onclick="selectFile()" class="btn btn-default btn-for-file">Choose File</button> 
      <div id="filename" class="file-name">No File Selected</div> 
    </div> 
    <br> 
    <div> 
    <label for="filesize" id="file_size_label" class="field-label">FileSize(In MB): </label><div class="filesize" id="filesize"></div> 
    <label for="starttime" id="start_time_label" class="field-label">StartTime:</label><div class="starttime" id="starttime"></div> 
    <label for="endtime" id="end_time_label" class="field-label">EndTime:</label><div class="endtime" id="endtime"></div> 
    </div> 
     <div class="container-progress"> 
         <div class="parent-progress" style="width: 100%;background-color: #c1c1c1;    height: 30px;     margin-top: 25px;    margin-bottom: 20px;">         
            <div class="child-progress" style="width: 0%;    background-color: #53b453;    height: 100%;"></div>    
          </div>            
         <span class="prog">0%</span> 
    </div> 
    <br> 
    <br> 
    <h1>Attachments:</h1> 
    <div id="loading"> Loading Attachments...</div> 
     <div id="no-attachment-found" hidden>No Attachment Found!!</div> 
     <table id="attachments" hidden> 
      <thead> 
        <tr> 
          <th>File</th> 
          <th>Created On</th>       
          <th>Actions</th> 
        </tr> 
      </thead> 
    <tbody> 
    </tbody> 
    </table> 
    </div> 
    
  13. कोड को सहेजने के लिए CTRL+S का चयन करें।

  14. फ़ाइल परीक्षण पृष्ठ पर वापस जाएँ, सूची का चयन करें, और फिर सूची संपादित करें का चयन करें.

  15. क्रियाएँ पर जाएँ और फिर रिकॉर्ड संपादित करें सक्षम करें।

  16. लक्ष्य प्रकार के लिए, वेबपेज का चयन करें.

  17. वेबपेज के लिए, अनुलग्नक का चयन करें.

  18. प्रदर्शन लेबल के लिए, अनुलग्नक अपलोड करें दर्ज करें.

  19. पूर्ण चयन करें.

  20. डिज़ाइन स्टूडियो के ऊपरी-दाएँ कोने में, कोड संपादन के साथ साइट को अपडेट करने के लिए सिंक का चयन करें।

चरण 4: अनुलग्नकों को अपलोड करने, डाउनलोड करने और हटाने के लिए API का उपयोग करें

वेब API कार्यक्षमता का परीक्षण करने के लिए:

  1. पूर्वावलोकन चुनें, और फिर डेस्कटॉप चुनें।

  2. उस उपयोगकर्ता खाते के साथ अपनी साइट पर लॉग इन करें जिसे आपके द्वारा पहले बनाई गई Azure फ़ाइल API उपयोगकर्ता भूमिका सौंपी गई है।

  3. पहले बनाए गए फ़ाइल परीक्षण पृष्ठ वेबपेज पर जाएँ।

  4. दाईं ओर से, अटैचमेंट्स अपलोड करें चुनें.

  5. कोई फ़ाइल चुनें और उसे अपलोड करने का प्रयास करें.

  6. किसी मौजूदा फ़ाइल को डाउनलोड करके उसे हटाने का प्रयास करें.

अब जबकि आपने अनुलग्नकों को अपलोड करने, डाउनलोड करने और हटाने के लिए नमूने वाला एक वेबपेज बना लिया है, तो आप प्रपत्र और लेआउट को अनुकूलित कर सकते हैं।

त्रुटि कोड और संदेश

निम्न तालिका में विभिन्न त्रुटि कोड और संदेश शामिल हैं, जिनका सामना आपको Azure पर फ़ाइलें अपलोड करने के लिए वेब API का उपयोग करते समय हो सकता है:

विवरण Http स्थिति त्रुटि कोड त्रुटि संदेश
अपलोड करने के लिए कोई फ़ाइल संलग्न नहीं है 400 एफयू00001 फ़ाइल सामग्री निर्दिष्ट नहीं है
पैरामीटर में दी गई इकाई आईडी या नाम सही नहीं है 404 एफयू00002 रिकॉर्ड नहीं मिला
उपयोगकर्ता के पास अनुमति नहीं है 403 एफयू00003 आप के पास इस कार्रवाई को करने की अनुमतियाँ नहीं हैं
दिया गया फ़ाइल एक्सटेंशन कॉन्फ़िगर नहीं किया गया है 400 एफयू00004 फ़ाइल एक्सटेंशन समर्थित नहीं है.
फ़ाइल माइम प्रकार समर्थित नहीं है 400 एफयू00005 फ़ाइल mimetype समर्थित नहीं है
फ़ाइल का आकार कॉन्फ़िगर किए गए आकार से बड़ा है 400 एफयू00006 फ़ाइल का आकार {0} MB से बड़ा है
Azure कॉन्फ़िगरेशन ग़लत हैं 400 एफयू00007 Azure कॉन्फ़िगरेशन ग़लत हैं
फ़ाइल नाम उपलब्ध नहीं कराया गया 400 एफयू00008 अनुरोध में शीर्षलेख x-ms-file-name अनुपलब्ध है
API सक्षम नहीं है 501 एफयू00009 Azure webapi उपयोग के लिए सक्षम नहीं है
अपडेट/अपलोड/डिलीट/डाउनलोड के लिए Azure फ़ाइल मान्य नहीं है 400 एफयू00010 अनुरोधित फ़ाइल इसके लिए उपलब्ध नहीं है {0}
Azure में स्टोरेज खाते पर IP प्रतिबंध सक्षम है 403 एफयू00011 IP प्रतिबंध सक्षम है
डाउनलोड करने के लिए फ़ाइल Azure में मौजूद नहीं है 400 एफयू00012 फ़ाइल मौजूद नहीं है
खंड का आकार 100 एमबी से अधिक है 400 एफयू00013 खंड का आकार 100mb से अधिक है
फ़ाइल का आकार नहीं दिया गया 400 एफयू00014 फ़ाइल का आकार प्रदान नहीं किया गया
समर्थित फ़ाइल प्रकार सेट नहीं हैं 400 एफयू00015 फ़ाइल एक्सटेंशन समर्थित नहीं है
समर्थित माइम प्रकार सेट नहीं हैं 400 एफयू00016 फ़ाइल mimetype समर्थित नहीं है
बिना चंकिंग के 128-एमबी से अधिक फ़ाइल 400 एफयू00017 फ़ाइल का आकार 128mb से अधिक है
Microsoft Entra ऐप को अनुमति नहीं दी गई 403 एफयू00018 Microsoft Entra एप्लिकेशन के पास यह ऑपरेशन करने की अनुमति नहीं है
Azure के साथ कनेक्शन बनाने के लिए प्रमाणपत्र मौजूद नहीं है 400 एफयू00019 प्रमाण पत्र मौजूद नहीं है
जब ऐप सेटिंग में टेनेंट आईडी या क्लाइंट आईडी या थंबप्रिंट सेट न किया गया हो 500 एफयू00020 आंतरिक सर्वर त्रुटि
फ़ाइल माइम प्रकार/फ़ाइल एक्सटेंशन समर्थित नहीं है 400 एफयू00021 फ़ाइल माइम प्रकार या एक्सटेंशन समर्थित नहीं है
खाता नाम या कंटेनर नाम मौजूद नहीं है या प्रदान नहीं किया गया है 400 एफयू00022 Azure कॉन्फ़िगरेशन ग़लत हैं