2017-07-21 10 views
0

私は2つのビデオを表示する必要があるWebサービス(ASP.NET MVCを使用)に取り組んでいます。これら2つの動画は定期的に更新されます。MVC Webサイトの新しいソースファイルの後にビデオをリロードする

MVCプロジェクトで使用されているモデルは、ビデオへのパスを保存するだけです(モデルにビデオファイルを格納することをお勧めします)。

私は、ビデオファイル(新しい.mp4ファイル、古いパスを維持する)を変更してリロードした後、ビデオは変更されると予想しましたが、そうではありません。

ビデオを更新するにはどうすればよいですか?これまではin this linkと同じように "load()"というHTML関数を作成しようとしましたが、うまくいきません。 (コントローラからアップデートを強制する必要があるので、これは私にとっては良い解決策になるとは思えません。)

ありがとう!

編集:コメントに要望どおりにコードを追加してください。コントローラでは

Picture CreateDefault(string pictureName) 
    { 
     Picture picture = new Picture(); 
     picture.FilePath += "Candidates/" + pictureName + ".mp4"; 
     picture.PicName = pictureName; 
     return picture; 
    } 

:モデルオブジェクトを作成し、コントローラに

public class Picture 
{ 
    public int PictureID { get; set; } 
    public string FilePath { get; set; } 
    public string PicName { get; set; } 
    public int Xsize { get; set; } 
    public int Ysize { get; set; } 

    public Picture() 
    { 
     FilePath = "../../VideoDatabase/"; 
     PicName = "Default"; 
     Xsize = 320; 
     Ysize = 200; 
    } 

    public void LinkNameAndPath() 
    { 
     FilePath = "../../VideoDatabase/" + PicName + ".mp4"; 
    } 
} 

モデルは(はい、名前は古いですが、私はそれを "ビデオ" に変更されます) 、ビューの呼び出し:ビューで

public ActionResult Index() 
    {    
     if (candidates.Count != 2) 
     { 
      return RedirectToAction("UnexpectedError"); 
     } 
     else 
     { 
      return View(candidates); 
     } 
    } 

を、ビデオオブジェクト:

 <video id="candidate0video" width="432" height="240" controls autoplay loop> 
      <source [email protected][0].FilePath type="video/mp4"> 
      Your browser does not support the video tag. 
     </video> 
+0

「F5」の代わりに「Ctrl + F5」が必要なのかもしれません。あなたが行ったことを、あなたのコードを示すことを示してください。 – jamiedanq

+0

Ctrl + F5を試しましたが、機能しませんでした。私はコードのいくつかを表示しようとしますが、それはかなり大きなプロジェクトですので、より適切なものを知ることは自明ではありません! – Pablo

答えて

0

私の友人は、問題に有益な洞察を提供しました。私は問題への私の解決策の根底にある、彼が言ったことをここで翻訳する(そして適応する):

それは複雑です。アセットを初めてダウンロードするときに、サーバは特定の時間中にクライアントにファイルをローカルにキャッシュするようにHTTP "Cache-control"ヘッダを追加します。

アクティブキャッシュを使用してサーバーの負荷を軽減したいという考えがあります。 (開発環境では、キャッシュを無効にすることが理にかなっているかもしれません)。

典型的な解決方法は、ファイルの内容のハッシュを自動的に追加することです。この方法では、テキストファイル(CSS/JS)を持っている場合、クライアントはコンテンツを更新するときに新しいバージョンをダウンロードします。

自動的に管理するライブラリを探してみることをお勧めします(動画はあなたのアプリからアップロードされ、FTPは直接使用しないものとします)。

0

最初にビューモデルをデバッグすることができます。これにより、ビューモデルが正しい値を取得しているかどうかを判断できます。ファイルパスが正しく更新されていない場合、明らかにビデオはページの右側に表示されません。

あなたは、おそらくも同様

  • pictureNameパラメータが正常に渡されるしました

    これらの事を確認する必要がありますか?
  • 方法はどうですか?LinkNameAndPath()?それは実際に呼ばれるかどうか?

更新

public ActionResult Index() 
{ 
    var path = HostingEnvironment.MapPath("[Your file path]"); 
    HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=[your file name].mp4"); 
    var objFile = new FileInfo(path); 
    var stream = objFile.OpenRead(); 
    var objBytes = new byte[stream.Length]; 
    stream.Read(objBytes, 0, (int)objFile.Length); 
    HttpContext.Response.BinaryWrite(objBytes); 
} 

<video id="candidate0video" width="432" height="240" controls autoplay loop> 
    <source [email protected]("Index","[your controller name]") type="video/mp4"> 
    <!-- or try the following --> 
    <!-- <source [email protected](Model[0].FilePath) type="video/mp4"> --> 
    Your browser does not support the video tag. 
</video> 
+0

こんにちは、寄付いただきありがとうございます! 私が変えようとしているのは、新しいビデオファイルのパスではなく、古いパスの最後のビデオファイルです。 (ただし、LinkNameAndPathが正しく動作し、pictureNameも正しく渡されていることを確認できます) – Pablo

+0

@Pabloはコード例を追加しました。おそらく試してみてください。 – woodykiddy

+0

私は今一日目を向いていますが、そのコードを動作させて問題を解決できるかどうかどうもありがとう! – Pablo

関連する問題