SharpLibZip: Добавьте файл без пути

Создать базу данных с таблицами. Затем сохраните информацию о вашем продукте. Затем вы можете использовать PHP и SQL для извлечения всей информации и отображения в div. Если у вас нет навыков работы с базами данных, попробуйте изучить их, прежде чем двигаться дальше. Если вы очень плохо знакомы с PHP, я предлагаю вам начать изучать основы, такие как переменные, методы, циклы, массивы, подключение к базе данных и т. Д., Чтобы вы могли предоставить некоторый код, и мы можем легко вам помочь. [110 ]

Дети не могут водить машины.

14
задан ProfK 13 October 2008 в 17:04
поделиться

3 ответа

Мое решение состояло в том, чтобы установить NameTransform свойство объекта ZipFile к ZipNameTransform с TrimPrefix набор к каталогу файла. Это вызывает часть каталога имен записи, которые являются полными путями к файлам, чтобы быть удаленными.

public static void ZipFolderContents(string folderPath, string zipFilePath)
{
    string[] files = Directory.GetFiles(folderPath);
    using (ZipFile zipFile = ZipFile.Create(zipFilePath))
    {
        zipFile.NameTransform = new ZipNameTransform(folderPath);
        foreach (string file in files)
        {
            zipFile.BeginUpdate();
            zipFile.Add(file);
            zipFile.CommitUpdate();
        }
    }
}

Что в моде, свойство NameTransform имеет тип INameTransform, позволение удовлетворения требованиям заказчика имени преобразовывает.

22
ответ дан 1 December 2019 в 07:20
поделиться

Как насчет того, чтобы использовать Система. IO.Path. GetFileName () объединенный с entryName параметром ZipFile. Добавить ()?

string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
     zipFile.BeginUpdate();
     foreach (string file in files)
     {
          zipFile.Add(file, System.IO.Path.GetFileName(file));
     }
     zipFile.CommitUpdate();
}
11
ответ дан 1 December 2019 в 07:20
поделиться

Запись MSDN для Directory.GetFiles() состояния, что возвращенные имена файлов добавляются к предоставленному параметру пути. ( http://msdn.microsoft.com/en-us/library/07wt70x2.aspx ), таким образом, строки Вы являетесь передающими к zipFile.Add(), содержат путь.

Согласно документации SharpZipLib, существует перегрузка Добавить метода,

public void Add(string fileName, string entryName) 
Parameters:
  fileName(String) The name of the file to add.
  entryName (String) The name to use for the ZipEntry on the Zip file created.

Попытка этот подход:

string[] files = Directory.GetFiles(folderPath);
using (ZipFile zipFile = ZipFile.Create(zipFilePath))
{
     zipFile.BeginUpdate();
     foreach (string file in files)
     {
          zipFile.Add(file, Path.GetFileName(file));
     }
     zipFile.CommitUpdate();
}
4
ответ дан 1 December 2019 в 07:20
поделиться