アップロードされたビデオの長さを取得する次のコードがあります。
HttpPostedFileBase postedFileCopy = postedFile;
postedFileCopy.InputStream.Position = 0;
Stream stream = postedFile.InputStream;
LocalResource tempDirectory = RoleEnvironment.GetLocalResource("TempZipDirectory");
postedFile.SaveAs(tempDirectory.RootPath + @"\" + postedFile.FileName);
ShellFile so = ShellFile.FromFilePath(tempDirectory.RootPath + @"\" + postedFile.FileName);
string durationString;
double nanoseconds;
double.TryParse(so.Properties.System.Media.Duration.Value.ToString(),out nanoseconds);
if (nanoseconds > 0)
{
int totalSeconds = (int)Math.Round((nanoseconds / 10000000), 0);
int seconds = totalSeconds % 60;
int minutes = totalSeconds / 60;
int hour = totalSeconds / (60 * 60);
durationString = "" + hour + ":" + minutes + ":" + seconds;
}
else
{
System.Diagnostics.EventLog.WriteEntry("Application", "BLANK DURATION STRING", System.Diagnostics.EventLogEntryType.Error);
durationString = "00:00:00";
}
これは localhost では期待どおりに機能しますが、Azure ストレージに配置すると、ファイルの詳細を取得できないようです。の
postedFile.SaveAs(tempDirectory.RootPath + @"\" + postedFile.FileName);
アップロードをディレクトリに保存するので、これらの詳細を取得できますが、何を試しても、ストレージが紺碧の場合にナノ秒が返されないようです。これはデプロイされた MVC アプリケーションであり、tempdirectory はサーバーの C:/ ドライブに保存されます。