2013-06-30 3 views
0

노래와 비디오 업로드 사이트 (mySpace와 유사)를 만들어서 파일이 프로젝트 내부의 폴더에 저장되도록합니다. 그 노래를 재생하려면 다음 플러그인을 사용하려고합니다 : http://kolber.github.io/audiojs/ 하지만 파일을 로컬로 재생하는 경우 "ExternalInterface.addCallback()"을 추가 할 것을 요청합니다. 이 콜백을 어디에 추가해야합니까 ?? 어떤 손이 여기 MVC4 멀티미디어 플러그인을 사용하는 방법

내 모델입니다 :) 웰컴 그래서 내가 MVC4 세계에서 새로운 해요 : Song.cs

namespace VPM.Models 
{ 
//db model 
public class Song 
{ 
    [Key] 
    public int userId { get; set; } 
    public string songName { get; set; } 
    public string songPath { get; set; } 
    public int like { get; set; } 
    public int unlike { get; set; } 
    public Boolean share { get; set; } 

} 
public class UploadMusic 
{ 
    [Required] 
    public int userId { get; set; } 
    [Required] 
    public string songName { get; set; } 
    [Required] 
    public string songPath { get; set; } 

    public Song getSong() 
    { 
     Song u = new Song { userId = this.userId, songName = this.songName, songPath = this.songPath }; 
     return u; 
    } 
} 

} 여기

내 컨트롤러 - SongsController.cs

@model VPM.Models.Song 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Your Music</h2> 

@using (Html.BeginForm("Index", "Songs", FormMethod.Post, new { enctype = "multipart/form-data" })){ 
    <input type="file" name="file" id="file"> 
    <input type="submit" /> 
} 

<script src="/audiojs/audio.min.js"></script> 
<script> 
    audiojs.events.ready(function() { 
     var as = audiojs.createAll(); 
    }); 
</script> 

<audio src="file:///C:/Users/dadaPC/Desktop/VPM/VPM/VPM/UserFiles/[email protected]/music/01 A Word From The Author.mp3" preload="auto" /> 
index.cshtml -
public class SongsController : Controller 
{ 
    // 
    // GET: /Songs/ 

    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult Index(HttpPostedFileBase file) 
    { 

     if (file.ContentLength > 0) 
     { 
      VPMDB db = new VPMDB(); 
      int id = Convert.ToInt32(Session["id"]); 
      String email =""; 
      var query = from u in db.users where u.userId.Equals(id) select u.Email; 
      bool flag = false; 

      foreach (var item in query) 
      { 
       flag = true; 
       email = item; 
      } 
      //if user exists 
      if (flag) 
      { 

       string UserDirectory = "C:\\Users\\dadaPC\\Desktop\\VPM\\VPM\\VPM\\UserFiles\\" + email + "\\music\\" + file.FileName.ToString(); 
       file.SaveAs(UserDirectory); 
       var fileName = Path.GetFileName(file.FileName); 

       UploadMusic newsong = new UploadMusic(); 
       newsong.userId = 11; 
       newsong.songName = file.FileName.ToString(); 
       newsong.songPath = UserDirectory; 

       db.song.Add(newsong.getSong()); 
       db.SaveChanges(); 
      } 

     } 

     return RedirectToAction("Index"); 
    } 


} 

여기 내이다

답변

0

페이지의 주석을 읽으면 이것이 보안 문제임을 알 수 있습니다. 아래 마지막 단락을 읽으십시오.

참고 : 브라우저에서 실행되는 로컬 내용의 경우 ExternalInterface.addCallback() 메서드에 대한 호출은 SWF 파일과 포함하는 웹 페이지가 local-trusted 보안 샌드 박스에있는 경우에만 작동합니다. 에서

: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback()

이 로컬 파일을 플래시 플레이어 보안 설정을 설정하는 데데를 통과하지 않는 한 페이지가 '도메인'에서로드 될 때, ExternalInterface를 호출에만 작동된다는 것을 의미합니다. http://localhost 카운트가 있지만 어떤 file:// 요청도 그렇지 않습니다.

+0

감사합니다. 오해했습니다. 이 사건에 대해 당신은 무엇을 권하고 싶습니까? html

+0

@ 122333123183 - 테스트 목적으로 만 사용한다고 가정합니다. 사용자가 로컬 파일에서이 파일을 사용하지 않습니까? –

+0

이것은 음악 파일이나 YouTube 링크를 업로드하고 재생할 수있는 대학 프로젝트입니다. – 122333123183

관련 문제