Timothy Heckler Ответов: 1

Что я упускаю? Как заставить кодировку filebase64 работать с моим конкретным кодом?


Контроллер:
public ActionResult Create()
      {

          var model = new Tickets();
          PopulateLists(model);


          return View("Create");
      }

      // POST: Tickets/Create
      [HttpPost]
      public ActionResult Create(Tickets model, HttpPostedFileBase files)
      {
          if (files != null && files.ContentLength > 0)
          {
              model.File1 = new byte[files.ContentLength];
              files.InputStream.Read(model.File1, 0, files.ContentLength);
              model.File2 = new byte[files.ContentLength];
              files.InputStream.Read(model.File2, 0, files.ContentLength);
              model.File3 = new byte[files.ContentLength];
              files.InputStream.Read(model.File3, 0, files.ContentLength);
          }
          if (ModelState.IsValid)
          {

              PopulateLists(model);
              _db.Tickets.Add(model);
              _db.SaveChanges();
              // TODO: Add insert logic here
              return RedirectToAction("Tickets");
          }

          return View("Tickets");
      }

Модель:
//omitted above code, not related to this section of code everything above here works fine.
public byte[] File1 { get; set; }
public byte[] File2 { get; set; }
public byte[] File3 { get; set; }


Смотреть:
//omitted not related to this section of code, everything above here works fine,

<div class="form-group">
           
            <div class="col-md-offset-2 col-md-10">
                <input type="file" id="File1" name="File1"/>
            </div>
           
            <div class="col-md-offset-2 col-md-10">
                <input type="file" id="File2" name="File2" />
            </div>
            
            <div class="col-md-offset-2 col-md-10">
                <input type="file" id="File3" name="File3" />
                <h3 />
            </div>
        </div>


Только сейчас, когда я дошел до того, что хочу загрузить файлы в свой проект, у меня есть довольно хорошее представление о том, как я собираюсь добавить его в проект, однако какие поля я буду использовать в таблице базы данных (я должен сказать, тип полей) Если или вы рекомендуете что-то еще?

Имейте в виду, что я использую базу данных c#6, MVC5/6 Razor sql и asp.net с entity framework все остальное, что вам нужно знать, спрашивайте, но спрашивайте четко, потому что я все еще могу неправильно понять, так как я новичок. Заранее спасибо всем за ваши предложения!

Что я уже пробовал:

все еще исследуя, прежде чем что-либо реализовать в проекте... Я новичок (4 месяца самообучения)

Timothy Heckler

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


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

Сведения Об Исключении: Система.FormatException: входные данные не являются допустимой строкой Base-64, поскольку они содержат неосновные 64 символа, более двух символов заполнения или недопустимый символ среди символов заполнения.

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


Необработанное исключение было сгенерировано во время выполнения текущего веб-запроса. Информацию о происхождении и местоположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

трассировка стека:



[FormatException: входные данные не являются допустимой строкой Base-64, поскольку они содержат неосновные 64 символа, более двух символов заполнения или недопустимый символ среди символов заполнения. ]
Система.Конвертировать.FromBase64_Decode(типа char* startInputPtr, типа int32 inputLength, байт* startDestPtr, типа int32 destLength) +12271509
Система.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) +130
Система.Convert.FromBase64String(String s) +42
Системы.Веб.В MVC.ByteArrayModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +98
Системы.Веб.В MVC.DefaultModelBinder.GetPropertyValue(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor, IModelBinder propertyBinder) +17
Системы.Веб.В MVC.DefaultModelBinder.BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) +382
Системы.Веб.В MVC.DefaultModelBinder.BindProperties(ControllerContext controllerContext, ModelBindingContext bindingContext) +122
System. Web.Mvc.DefaultModelBinder. BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, объектная модель) +55
Системы.Веб.В MVC.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext восстановления команда bindingcontext) +1230
Системы.Веб.В MVC.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +348
Системы.Веб.В MVC.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +338
Системы.Веб.В MVC.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +105
Системы.Веб.В MVC.Асинхронность.&ЛТ;&ГТ;с__DisplayClass21.&ЛТ;begininvokeaction&ГТ;б__19(объект asynccallback метод asynccallback, объект параметр asyncstate) +743
System.Web.Mvc.Async.WrappedAsyncResult`1. CallBeginDelegate(asynccallback callback, Object callbackState) +14
System.Web.Mvc. Async.WrappedAsyncResultBase`1. Begin(обратный вызов AsyncCallback, состояние объекта, тайм-аут Int32) +128
Системы.Веб.В MVC.Асинхронность.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, asynccallback callback, состояние объекта) +328
System. Web.Mvc. Controller. & lt;beginexecutecore & gt;b__1c (AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +25
System.Web.Mvc.Async.WrappedAsyncVoid`1. CallBeginDelegate(asynccallback callback, Object callbackState) +30
System.Web.Mvc. Async.WrappedAsyncResultBase`1. Begin(обратный вызов AsyncCallback, состояние объекта, тайм-аут Int32) +128
Системы.Веб.В MVC.Контроллер.BeginExecuteCore(обратный вызов AsyncCallback, состояние объекта) +556
System. Web.Mvc. Controller.<beginexecute>b_ _ 14(AsyncCallback asyncCallback, Object callbackState, Controller controller) +18
System. Web.Mvc.Async.WrappedAsyncVoid`1. CallBeginDelegate(asynccallback callback, Object callbackState) +20
System.Web.Mvc. Async.WrappedAsyncResultBase`1. Begin(обратный вызов AsyncCallback, состояние объекта, тайм-аут Int32) +128
Системы.Мы

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Входные данные не являются допустимой строкой Base-64, поскольку они содержат неосновные 64 символа, более двух символов заполнения или недопустимый символ среди символов заполнения.

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

Насколько я вижу, код в вашем вопросе не связан с декодированием base64.

[Обновление]
Цитата:
Я даже не знаю, с чего начать, я попытался следовать нескольким примерам на этом сайте и другим для base64, и я не могу заставить его работать, он продолжает давать ту же ошибку.

Запустите свой код на отладчике, и когда вы получите ошибку, проверьте переменную, которая должна содержать значение base64, и обновите свой вопрос с этим значением, таким образом, мы сможем увидеть, что вы пытаетесь декодировать.
Нота: единственный интересный код - это то, где возникает ошибка.


Timothy Heckler

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

Dave Kreskowiak

Не знаете, с чего начать? Легко. Когда отладчик останавливается и показывает вам строку, которая вызвала исключение (вы запускаете это под отладчиком, правильно?) наведите курсор мыши на переменные в строке и изучите их содержимое. Являются ли они тем, что ожидается?

Timothy Heckler

Не дает неправильной строки, просто выдает тот же код, что и выше. Так что я удалил код, и я по-прежнему занимаюсь исследованиями о том, что следует попробовать в следующем.