При загрузке файлов на Sharepoint (WSS 3.0) ПОМЕЩАЕТСЯ библиотека документа с помощью HTTP

Если вы можете использовать что-то еще, кроме бесплатной функции, я бы предложил использовать некоторый функтор для удержания счетчика, но в случае, если вы не можете, вы можете попытаться использовать что-то подобное, используя дружбу, чтобы сделать трюк: [ 111]

#include <memory>

class Counter;
int countRecursive(int cancelCondition, std::unique_ptr<Counter> counter = nullptr);

class Counter {
    int count = 0;
private:
    friend int countRecursive(int, std::unique_ptr<Counter>);
    Counter() = default; // the constructor can only be call within the function
                         // thus nobody can provide one
};

int countRecursive(int cancelCondition, std::unique_ptr<Counter> c)
{
    if (c == nullptr)
       c = std::unique_ptr<Counter>(new Counter());

    if(cancelCondition > 0)
    {
        c->count++;
        return countRecursive(--cancelCondition, std::move(c));
    }
    else
    {
        return c->count;
    }
}

int main() {
    return countRecursive(12);
}
9
задан taggers 27 February 2009 в 19:46
поделиться

6 ответов

У меня возникла эта проблема, когда я ссылался на URL-адрес библиотеки документов, а не на сам файл назначения.

т.е. попробуйте http: // server имя / имя библиотеки документов / новое имя файла.doc

8
ответ дан 4 December 2019 в 20:25
поделиться

Никакая подсказка. Но почему Вы не используете Вызовы удаленной процедуры (RPC), которые это - то, как я обычно делаю это.

Я нашел этот пример, который мог бы получить Вас, запустил http://geek.hubkey.com/2007/11/upload-file-to-sharepoint-document.html

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

Есть ли конкретная причина, Вы не можете только использовать API Sharepoint (например, SPFolder. Файлы. Добавьте) загружать файл? Следующим образом:

http://msdn.microsoft.com/en-us/library/ms454491.aspx

public void UploadFile(string srcUrl, string destUrl)
{
    if (! File.Exists(srcUrl))
    {
        throw new ArgumentException(String.Format("{0} does not exist", 
            srcUrl), "srcUrl");
    }

    SPWeb site = new SPSite(destUrl).OpenWeb();

    FileStream fStream = File.OpenRead(srcUrl);
    byte[] contents = new byte[fStream.Length];
    fStream.Read(contents, 0, (int)fStream.Length);
    fStream.Close(); 

    EnsureParentFolder(site, destUrl);
    site.Files.Add(destUrl, contents);
}
0
ответ дан 4 December 2019 в 20:25
поделиться

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

Вы можете проверить переменную "destUri", чтобы узнать, указывает ли она точно на ожидаемый список точек доступа.

Моя ситуация такова. сначала создал библиотеку документов «Требования», есть опечатка, затем я изменил заголовок на «Требования». Вы должны заметить, что sharepoint по-прежнему сохраняет URL-адрес этого списка как http: // server: port / Requrements

. Это исключение. Надеюсь, это поможет.

0
ответ дан 4 December 2019 в 20:25
поделиться

Попробуйте:

void StorePlainFile(string target_url, string filename, byte[] file_bytes)
{
      string url = target_url + "/" + filename;
      System.Net.WebClient client = new System.Net.WebClient();
      client.Credentials = System.Net.CredentialCache.DefaultCredentials;
      client.Headers.Add("Overwrite", "F");
      byte[] response = client.UploadData(url, "PUT", file_bytes);
}
1
ответ дан 4 December 2019 в 20:25
поделиться

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

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

Я намерен 1) загрузить документ и 2) установить метаданные документа. 1) и 2) происходят по отдельным HTTP-вызовам. В идеале я хочу сделать это за один звонок, но не знаю, как это сделать.

Для этого 1) выполняется успешно, поэтому документ появляется в библиотеке. Затем, когда я пытаюсь обновить метаданные, я получаю ошибку 409.

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

Нет, мы не хотим использовать Sharepoint API, потому что для него нет библиотек в Java. ; -)

1
ответ дан 4 December 2019 в 20:25
поделиться
Другие вопросы по тегам:

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