Объектный набор экспорта к XML-файлу

Вы сохранили имя файла с его исходным расширением в базе данных? Если это так, приведенный ниже код должен работать.

<img src="{{ asset('images/avatar/helmet/'.Auth::user()->avatar)}}">

Я рекомендую сохранить файл с его оригинальным расширением, добавив -> getClientOriginalExtension (). Это будет выглядеть так:

  $image = $request->file('imagename');

  if (isset($image))
  {

      $imagename = uniqid() .'-'. $image->getClientOriginalExtension();
      if (!file_exists('Uploads/Media/Slider'))
      {
          mkdir('Uploads/Media/Slider', 0777 , true);
      }
      $image->move('Uploads/Media/Slider',$imagename);
  }else {
      $imagename = 'slider.png';
  }
5
задан MattSlay 6 June 2011 в 15:05
поделиться

4 ответа

Система. Время выполнения. Сериализация является Вашим другом здесь, если Вы решаете пойти для XML.

В одном из моих тестовых приложений я иногда должен мочь сериализировать объект как XML, таким образом, я могу посмотреть на все это офлайн. Вот отрывок, который я использую (не оптимизированный всегда, просто быстро столкнутый однажды, и он работал, когда мне был нужен он).

public static string ObjectToXml<T>(T objectToSerialise)
{
    StringWriter Output = new StringWriter(new StringBuilder());
    XmlSerializer xs = new XmlSerializer(objectToSerialise.GetType());
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add("MyNs", "http://www.someXmlNamespace/namespace1"); // add as many or few as you need
    xs.Serialize(Output, objectToSerialise, ns);
    return Output.ToString();
}

После этого это тривиально для наливания данных в файл.

Примечания:
Я должен был смочь получить содержание XML как строку, таким образом, я мог сохранить его один из нескольких путей. Создание метода для движения прямо к диску было бы легко также, если это - то, в чем Вы нуждаетесь.
Хотя это работает на меня, Вы, возможно, должны настроить для удовлетворения собственных потребностей.

4
ответ дан 14 December 2019 в 09:01
поделиться

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

Сериализация JSON поможет подавить размер файла. JavaScriptSerializer может быть найден в Системе. Сеть. Сценарий. Сериализация (System.Web.Extensions.dll).

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

var strFileData = System.IO.File.ReadAllText("FileName.data");
var jss = new JavaScriptSerializer();
var objItemsList = jss.Deserialize<List<ConfigurationItem>>(strFileData);
// {insert code here tomanipulate object "objItemsList"}
var strNewData = jss.Serialize(objItemsList);
System.IO.File.WriteAllText("FileName.data", strNewData);
2
ответ дан 14 December 2019 в 09:01
поделиться

Проблема с Сериализацией к XML - это, если Ваш класс, сериализируемый изменения (новое свойство), то xml не может использоваться для воссоздания экземпляра того класса.

Если класс довольно прост (или даже если это не), Вы могли бы сделать это вручную:

XmlDocument doc = new XmlDocument();
XmlNode root = doc.CreateNode(XmlNodeType.Element,"root")
doc.AppendChild(root)
XmlNode newPage = doc.CreateNode(XmlNodeType.Element,"pattern")
root.AppendChild(newPage)
newPage.Attributes.Append(doc.CreateAttribute("Name",pattern.Name)
foreach (Hole h in pattern.Holes)
{
  XmlNode hole = doc.CreateNode(XmlNodeType.Element,"hole")
  hole.Attributes.Append(doc.CreateAttribute("XCoord",h.Xcoord)
  hole.Attributes.Append(doc.CreateAttribute("YCoord",h.Ycoord)
  newPage.AppendChild(hole)
}
// etc
doc.Save("output.xml")

Этот код груб, но он генерировал бы что-то как:

<root>
  <pattern name="Pattern1">
    <hole XCoord="100" YCoord="50" />
  </pattern>
</root>
1
ответ дан 14 December 2019 в 09:01
поделиться

Существует тонна тем на StackOverflow о Сериализации XML, включая несколько превосходных сообщений относительно некоторых скрытый gotchyas:

Сохранение Структур данных с помощью Сериализации

Сериализация Gotchyas

0
ответ дан 14 December 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: