Я пытался загрузить большие PDF-файлы с помощью Rest API SharePoint на Java, но мне не удалось этого сделать.
Цель — загрузить большой файл частями, чтобы не возникало таймаута сеанса проблема.
Я пытался загрузить файл по этому URL частями:
https://abc.xyz.com/sites/abc-sharepoint-site/_api/ web/GetFolderById('45dfdf-5f22-df43-82e8-64dfd457a4848')/Files/add(url='2024-09-17-result%201726548758704.pdf',overwrite=true)
Для получения дополнительной информации ознакомьтесь с этой документацией: https://learn.microsoft.com/en-us/share ... ode]String uploadUrl = "https://abc.xyz.com/sites/abc-sharepoin ... rite=true)";
public void uploadChunk(String uploadUrl, File file, String token) throws Exception {
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[50 * 1024 * 1024];
int bytesRead;
int chunkNumber = 0;
long totalBytes = file.length();
long uploadedBytes = 0;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
long start = uploadedBytes;
long end = start + bytesRead - 1;
URL url = new URL(uploadUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", "Bearer " + token);
connection.setRequestProperty("Content-Range", "bytes " + start + "-" + end + "/" + totalBytes);
connection.setRequestProperty("Content-Length", String.valueOf(bytesRead));
connection.setRequestProperty("Content-Type", "application/json;odata=verbose"); // Binary data
connection.setRequestProperty("Accept", "application/json;odata=verbose");
connection.setRequestProperty("X-HTTP-Method", "MERGE");
connection.setDoOutput(true);
OutputStream outputStream = connection.getOutputStream();
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_CREATED || responseCode == 202) {
System.out.println("Chunk " + chunkNumber + " uploaded successfully.");
chunkNumber++;
uploadedBytes += bytesRead;
} else {
throw new Exception("Failed to upload chunk " + chunkNumber + ", response code: " + responseCode);
}
}
fileInputStream.close();
}
[/code]
Появляется ошибка: ErrorImage
Размер загруженного файла совпадает с размером фрагмента. Похоже, данные перезаписываются.
Подробнее здесь: https://stackoverflow.com/questions/789 ... pi-in-java