2012-10-31 11 views
5

का उपयोग कर ध्वनि क्लाउड खाते में गीत अपलोड करना मैं souncloud API और जावास्क्रिप्ट का उपयोग करके ध्वनि क्लाउड में एक गीत अपलोड करने का प्रयास कर रहा हूं। लेकिन मुझे ऐसा करने में सक्षम नहीं लगता है। यह मेरा जावास्क्रिप्टजावास्क्रिप्ट

function ADDTRACK() { 
    var test = document.getElementById('SongTrack').files[0]; 
    SC.get("http://api.soundcloud.com/users/redstr/tracks.json?client_id=3200814596a029b47877e63edfe6066c", { 
     limit: 1 
    }, function(tracks) { 
     SC.POST({ 
      tracks: { 
       description: 'This track was recorded in Berlin', 
       asset_data: '@' + test 
      } 
     }); 
    }); 
} 

है और ये मेरे एचटीएमएल

<input type="file" id ="SongTrack" name="pic" accept="audio/*" /> 
     <button type="button" onclick="ADDTRACK()" />Add TRACK</button> 

मैं कोई त्रुटि प्राप्त अपलोड है, इसलिए किसी को भी क्या im में मुझे इंगित कर सकते हैं गलत कर?

+0

आप डीबगर के माध्यम से कदम की कोशिश की है? मैं एपीआई से परिचित नहीं हूं, लेकिन हो सकता है कि "ऑनसिस" और "ऑनरर" हो, यहां तक ​​कि आप कैप्चर कर सकते हैं, जैसे कि जेक्री अजाक्स ने कहा कि आप यह देखने के लिए कैप्चर कर सकते हैं कि क्या हो रहा है। – spots

उत्तर

2

से: http://developers.soundcloud.com/docs/api/guide#uploading

// the JavaScript SDK does not by itself have access 
// to the filesystem, so instead this example records 
// some audio in the browser and uploads it. 

     SC.connect(function() { 
      SC.record({ 
      start: function() { 
       window.setTimeout(function() { 
       SC.recordStop(); 
       SC.recordUpload({ 
        track: { title: 'This is my sound' } 
       }); 
       }, 5000); 
      } 
      }  
    }); 

तो तुम सीधे जावास्क्रिप्ट के साथ ट्रैक अपलोड नहीं कर सकते।

+0

ऐसा लगता है कि यह दिनांकित है, जावास्क्रिप्ट सिद्धांतों के माध्यम से फ़ाइलों तक पहुंच प्राप्त कर सकता है एचटीएमएल 5 में एपीआई ... मैंने अभी यूट्यूब पर प्रत्यक्ष अपलोडर बनाया है, अगर मैं इसे प्राप्त कर सकता तो यह बहुत अच्छा होगा SoundCloud के साथ ... –

1

मैं जावास्क्रिप्ट एसडीके के माध्यम से ऑडियो फ़ाइलों को अपलोड करना चाहता हूं, इसलिए मैंने इसे काम करने के लिए PHP और जेएस एसडीके को इंजीनियर किया।

सबसे पहले, आपको यह सुनिश्चित करना चाहिए कि आपके पास जावास्क्रिप्ट एसडीके काम कर रहा है। हम केवल प्रमाणीकरण टोकन (एक अनियंत्रित विधि का उपयोग कर) के लिए इसका उपयोग कर रहे हैं। टोकन के अलावा, शेष इसे मैन्युअल रूप से $.ajax और FormData ऑब्जेक्ट का उपयोग करके संभाला जाता है।

HTML:

<script src="//cdn.jsdelivr.net/jquery/1.8.3/jquery-1.8.3.min.js"></script> 
<script src="//connect.soundcloud.com/sdk.js"></script> 
<button id="login">log in</button> 
<form> 
    <label>Title: <input name="title" disabled /></label><br> 
    <label>File: <input name="file" type="file" accept="audio/*" disabled /></label><br> 
    <button type="submit" disabled >Submit</button> 
</form> 

जावास्क्रिप्ट:

SC.initialize({ 
    client_id: "INSERT_CLIENT_ID", 
    redirect_uri: "INSERT_REDIRECT_URI" 
}); 

$("#login").click(function(){ 
    SC.connect(function(){ 
     $('form input,form button').removeAttr('disabled'); 
    }); 
}); 

$('form').submit(function(e) { 
    var fd = new FormData(); 
    fd.append('oauth_token', SC.accessToken()); 
    fd.append('format','json'); 
    fd.append("track[title]", $(this).find('input[name=title]').val()); 
    fd.append("track[asset_data]", $(this).find('input[name=file]').prop('files')[0]); 

    $.ajax({ 
     url: 'https://api.soundcloud.com/v1/tracks', 
     type: 'POST', 
     data: fd, 
     processData: false, 
     contentType: false, 
     xhr: function() { 
      var xhr = $.ajaxSettings.xhr(); 
      xhr.upload.onprogress = function(e) { 
       if(e.lengthComputable) { 
        var percent = Math.floor((e.loaded/e.total) * 100); 
        console.log(percent + '% uploaded'); 
       } 
      }; 
      return xhr; 
     } 
    }).done(function(e) { 
     console.log('Upload Complete!'); 
     console.dir(e); // This is the JSON object of the resulting track 
    }); 
    e.preventDefault(); 
});