Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Выдает ошибку: Входные данные не являются действительной строкой Base-64 / 8 сообщений из 8, страница 1 из 1
09.12.2013, 11:52
    #38493846
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
Доброго дня уважаемые форумчане! Возник такой вопрос. Пишу маленький сайтик (пока только этому учусь) и мне выдает ошибку:Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или недопустимый символ среди символов заполнения. причем изображение добавить в БД получается вроде как без вопросов, вопросы такие начинаются когда я пытаюсь отредактировать объект имеющий изображение....там даже перехода к контроллеру не происходит. вот фрагменты кода: 1. Код C#

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class Product
    {
        [HiddenInput(DisplayValue = false)]
        public int ID { get; set; }
        [Required]
        public string Name { get; set; }
        [HiddenInput(DisplayValue = false)]
        [Required]
        [Range(0.01, double.MaxValue, ErrorMessage = "Введите пожалуйста верное значение!")]
        public decimal Price { get; set; }

        public byte[] ImageData { get; set; }
        [HiddenInput(DisplayValue = false)]
        public string ImageType { get; set; }
    }


2. Код C#

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
[HttpGet]
        public ActionResult ProductOperation(Product prod)
        {
            OperationalMemory operational = reposytory.OperationalMemories.FirstOrDefault(c => c.ProductID == prod.ID);
            var model = new ProductOperationMemory()
            {
                Product = prod,
                OperationalMemory = operational
            };
            return View(model);
        }

        [HttpPost]
        public ActionResult ProductOperation(ProductOperationMemory model, HttpPostedFileBase image)
        {
            if (ModelState.IsValid)
            {
                if (image != null)
                {
                    model.Product.ImageType = image.ContentType;
                    model.Product.ImageData=new byte[image.ContentLength];
                    image.InputStream.Read(model.Product.ImageData, 0, image.ContentLength);
                }
                reposytory.SaveOperationMemory(model.OperationalMemory);
                reposytory.SaveProduct(model.Product);
                TempData["mesage"] = string.Format("Объект \"{0}\" успешно сохранен!", model.Product.Name);
                return View("AdminPage");
            }
            return View();
        }


3. Код HTML5
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
@model Models.ProductOperationMemory

@{
    ViewBag.Title = "ProductOperation";
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}

@using (Html.BeginForm("ProductOperation","MainAdministrator",
    FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @*<fieldset>*@
        <legend>Операционная память</legend>
        @Html.HiddenFor(p => p.Product.ID)

        <div>Наименование</div>
        <div>@Html.EditorFor(p=>p.Product.Name)</div>

        <div>Стоимость</div>
        <div>@Html.EditorFor(p=>p.Product.Price)</div>

        @Html.HiddenFor(p => p.OperationalMemory.ID)
        @Html.HiddenFor(p => p.OperationalMemory.ProductID)
        <div>Частота</div>
        <div>@Html.EditorFor(p=>p.OperationalMemory.Frequency)</div>

        <div>PC-индекс</div>
        <div>@Html.EditorFor(p=>p.OperationalMemory.PCIndex)</div>

        <div>Тайминги</div>
        <div>@Html.EditorFor(p=>p.OperationalMemory.Timing)</div>

        <div>Тип DDR</div>
        <div>@Html.EditorFor(p=>p.OperationalMemory.TipeDDR)</div>

        <div>Примечания</div>
        <div>@Html.EditorFor(p=>p.OperationalMemory.Note)</div>

        <div>Изображение</div>
        <div>
            @if (Model.Product.ImageData == null)
            {
                @:None
            }
            else
            {
                <img width="200" height="150" src="@Url.Action("GetImage","MainAdministrator", new {Model.Product.ID})"/>
            }
            <div>Загрузить изображение:
                <input type="file" name="Image"/>
            </div>
        </div>

        <p>
            <input type="submit" value="Сохранить"/>
        </p>
    @*</fieldset>*@
}


вот такой вот код.... как и писал выше добавление вроде проходит нормально, по крайней мере в БД ячейки заполняются, но как только пытаюсь отредактировать объект содержащий изображение вылетает сообщение об ошибке. причем расставив точки останова и наблюдаю что в контроллер с HttpGet даже не заходит..сразу ошибку выдает(( Подскажите пожалуйста что делать За ране огромное спасибо.
...
Рейтинг: 0 / 0
09.12.2013, 12:24
    #38493908
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
Alex_studenticu,

.. а на каком этапе у вас происходит конвертация байтов в base64 и наоборот?
...
Рейтинг: 0 / 0
09.12.2013, 12:30
    #38493919
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
да вот в том то и вопрос что больше ничего кроме приложенного кода вроде как и не прописывал (разве что сохранение)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public void SaveProduct(Product prod)
        {
            if (prod.ID == 0)
            {
                itemDB.Products.Add(prod);
            }
            else
            {
                Product dbProduct = itemDB.Products.Find(prod.ID);
                if (dbProduct != null)
                {
                    dbProduct.Name = prod.Name;
                    dbProduct.Price = prod.Price;
                    dbProduct.ImageData = prod.ImageData;
                    dbProduct.ImageType = prod.ImageType;
                }
            }
            itemDB.SaveChanges();
        }


если конвертация какая и проходит то я не знаю где((
...
Рейтинг: 0 / 0
09.12.2013, 12:47
    #38493951
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
Сейчас еще попутно пробую реализовать удаление из БД и получается так, что обычные данные (без изображения в смысле) удаляет без вопросов, а как только пытаюсь удалить с изображением выдает опять эту ошибку(
...
Рейтинг: 0 / 0
09.12.2013, 17:28
    #38494409
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
carrotikAlex_studenticu,

.. а на каком этапе у вас происходит конвертация байтов в base64 и наоборот?
Тоже не понял.
...
Рейтинг: 0 / 0
09.12.2013, 17:34
    #38494421
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
вот тут то и вопрос(( все что было выложил ..... и черт пойми что делать((уже вторые сутки пухну(
...
Рейтинг: 0 / 0
09.12.2013, 18:22
    #38494504
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
Alex_studenticu,

... честно, я не спец в Entity Framework, но может, там где-то птичка стоит "Сохранять изображения в виде base64" ?? ... Просто в качестве "А хз, а вдруг?" ...
...
Рейтинг: 0 / 0
14.12.2013, 12:53
    #38500800
Alex_studenticu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выдает ошибку: Входные данные не являются действительной строкой Base-64
не знаю в чем была причина на исправил каким-то образом) переписав код и изменив связи.....если кому интересно то могу потом разместить код)
Спасибо всем за участие)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Выдает ошибку: Входные данные не являются действительной строкой Base-64 / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]