Загрузка изображения в Amazon S3 с использованием ASP.Net MVC 3 - PullRequest
3 голосов
/ 12 декабря 2011

У меня проблема на стороне контроллера при использовании ASP.Net MVC 3 при попытке загрузить изображение в amazon s3.Вот что у меня есть и ошибка.

Вот моя HTML-форма.

@using (Html.BeginForm())
{
    <div class="in forms">

        <input type="file" id="file" name="file" class="box" /></p>

        <p><input type="submit" value="Upload" id="btnSubmit" class="com_btn" /></p>

}

А вот код в моем контроллере

[HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client("*redacted*","*redacted*");
        if (file.ContentLength > 0)
        {
            var request = new PutObjectRequest();
            request.WithBucketName("*redacted*");
            request.WithKey(file.FileName);
            request.FilePath = Path.GetFullPath(file.FileName);
            request.ContentType = file.ContentType;
            request.StorageClass = S3StorageClass.ReducedRedundancy;
            request.CannedACL = S3CannedACL.PublicRead;
            client.PutObject(request);
            return Redirect("UploadSuccess");
        }
        return RedirectToAction("Index");
    }

Я получаю ошибку:

Ошибка сервера в приложении '/'.

Ссылка на объект не установлена ​​на экземпляробъект.

Описание: необработанное исключение произошло во время выполнения текущего веб-запроса.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NullReferenceException: для ссылки на объект не задан экземпляр объекта.

Ошибка источника:

Строка 28: if (file.ContentLength> 0)

Ответы [ 3 ]

4 голосов
/ 12 декабря 2011

Помогает ли это?

using (@Html.BeginForm(new { enctype = "multipart/form-data" }))

Вас взломали - загрузка файлов

1 голос
/ 12 декабря 2011
@using (Html.BeginForm("Index", "YourController", FormMethod.Post, new { enctype = "multipart/form-data" })) 

и изменить

if (file.ContentLength > 0)

на

if (file == null || file.ContentLength <= 0)
{
    // Add some client side error message.

    // Return the view
    return View();
}

// Upload...
var request = new PutObjectRequest();
...
1 голос
/ 12 декабря 2011

Используйте точки останова и отлаживайте код. Посмотрите, являются ли ваши объекты нулевыми или нет. Доступ к свойству / методу нулевого объекта обычно приводит к этой ошибке.

...