Получить MIME-тип файла, размещенного с помощью jQuery в MVC 3 - PullRequest
0 голосов
/ 03 мая 2011

Мне нужна помощь, чтобы получить ContentType файла, который загружен через jQuery из представления в MVC 3.

Ниже приведен код в представлении, которое обрабатывает сообщение:

<div>
    <label for="username">Username</label><br/>
    <input type="text" name="username" id="username" value="" /><br/>
    <img id="thumb" /><br/>
    <a id="ajaxUpload" href="#">Upload Image</a><br/>
    <div class="preview"></div>
</div>

@section JavascriptContent {
<script type="text/javascript" src="/content/js/jquery/fileuploader.js"></script>

<script type="text/javascript">
//<![CDATA[
    var thumb = $('img#thumb'); 

    var uploader = new qq.FileUploaderBasic({
        button: $('#ajaxUpload')[0],
        enctype: 'multipart/form-data',
        action: '@Url.Action("someAction", "someController")',
        params: { },
        name: 'imageFile',
        allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],  
        //each file size limit in bytes
        //this option isnt supported in all browsers
        sizeLimit: 4096000, // max size   
        minSizeLimit: 2048, // min size
        multiple: false,
        debug: true,
        onSubmit: function(file, extension) {
            this.params = { boardId: $('#someGuid').val(), username: $('#username').val() };
            $('div.preview').addClass('loading'); // Loading...
        },
        onComplete: function(id, filename, response) {
            thumb.load(function(){
                $('div.preview').removeClass('loading');
                thumb.unbind();
            });
            if (response.Success){
                thumb.attr('src', response.FilePath);
            } else {
                alert(response.Message); //json response that contains a message and some other info
            }
        }
    });
//]]>   
</script>
}

и вот часть действия контроллера, где мне нужен тип MIME [часть IE работает нормально]:

var stream = Request.InputStream;
if (String.IsNullOrWhiteSpace(Request["qqfile"]))
{
    // IE
    HttpPostedFileBase postedFile = Request.Files[0];
    stream = postedFile.InputStream;
    fileContentType = postedFile.ContentType;
    fileName = System.IO.Path.GetFileName(postedFile.FileName);
}
else
{
    //Mozilla / Safari
    //TODO: this is where i need to get the mime type
    fileName = qqfile;
}

Всякий раз, когда используется браузер, отличный от IE Request.Files не содержит ключей ..Есть ли способ обойти это?MIME-тип ОБЯЗАН для базы данных.

Большое спасибо!

1 Ответ

1 голос
/ 03 мая 2011

Вы уверены, что имя переменной сообщения "qqfile" является правильным?Проверьте тег <input>, сгенерированный вызовом jQuery, и убедитесь, что он имеет правильное значение атрибута name.

...