TagLib-sharp: чтение метаданных из объекта HttpPostedFile - PullRequest
6 голосов
/ 12 ноября 2011

Пользователь публикует свои MP3-файлы на моем сайте, и я хотел бы прочитать метаданные из файлов, прежде чем они будут сохранены в CDN. TagLib-Sharp, похоже, библиотека для этого, но я не вижу способа открыть HttPostedFile, который я не хочу сохранять на диск, и получить метаданные.

У кого-нибудь есть пример, как это сделать с taglib-sharp?

Редактировать: Кажется, что IFileAbstraction может решить эту проблему. Кто-нибудь знает, как использовать IFileAbstraction?

1 Ответ

5 голосов
/ 17 января 2012

Вы хотели бы сделать что-то следующим образом. Предостережение в том, что пар должен быть доступным, и я не знаю, является ли HttpPostedFile.InputStream.

TagLib.File myFile = TagLib.File.Create(new HttpPostedFileAbstraction(postedFile));

public class HttpPostedFileAbstraction : TagLib.File.IFileAbstraction
{
    private HttpPostedFile file;

    public HttpPostedFileAbstraction(HttpPostedFile file)
    {
        this.file = file;
    }

    public string Name {
        get { return file.FileName; }
    }

    public System.IO.Stream ReadStream {
        get { return file.InputStream; }
    }

    public System.IO.Stream WriteStream {
        get { throw new Exception("Cannot write to HttpPostedFile"); }
    }

    public void CloseStream (System.IO.Stream stream) { }
}
...