Upload large 100mb + files to Sharepoint 2010 using C # web service

I cannot upload large files in Sharepoint 2010. I am using Visual Studio 2010 and Language C #. I tried several ways from the content that I found on the Internet, but nothing worked. I changed the settings and configuration files to the maximum allowable download limits and still nothing. I use copy.asmx for small files that work fine, and I try to load UploadDataAsync when the file is too large and an exception is thrown, but this does not work. Please take a look at the code below ...

Any / all help is appreciated.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; namespace ListsService { public class UploadDocumentcs { public string UploadResult { get; set; } public string Errors { get; set; } public UploadDataCompletedEventHandler WebClient_UploadDataCompleted { get; set; } public byte[] content { get; set; } public void UploadDocumentToSP(string localFile, string remoteFile) { string result = string.Empty; SPCopyService.CopySoapClient client = new SPCopyService.CopySoapClient(); string sUser = "user"; string sPwd = "pwd"; string sDomain = "dmn"; System.Net.NetworkCredential NC = new System.Net.NetworkCredential(sUser, sPwd, sDomain); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; client.ClientCredentials.Windows.ClientCredential = NC; try { client.Open(); string url = "http://SP/TestLibrary/"; string fileName = localFile.Substring(localFile.LastIndexOf('\\'), (localFile.Length - localFile.LastIndexOf('\\'))); fileName = fileName.Remove(0, 1); string[] destinationUrl = { url + fileName }; System.IO.FileStream fileStream = new System.IO.FileStream(localFile, System.IO.FileMode.Open); byte[] content = new byte[(int)fileStream.Length]; fileStream.Read(content, 0, (int)fileStream.Length); fileStream.Close(); // Description Information Field SPCopyService.FieldInformation descInfo = new SPCopyService.FieldInformation { DisplayName = "Description", Type = SPCopyService.FieldType.File, Value = "Test file for upload" }; SPCopyService.FieldInformation[] fileInfoArray = { descInfo }; SPCopyService.CopyResult[] arrayOfResults; uint result2 = client.CopyIntoItems(fileName, destinationUrl, fileInfoArray, content, out arrayOfResults); // Check for Errors foreach (SPCopyService.CopyResult copyResult in arrayOfResults) { string msg = "====================================" + "SharePoint Error:" + "\nUrl: " + copyResult.DestinationUrl + "\nError Code: " + copyResult.ErrorCode + "\nMessage: " + copyResult.ErrorMessage + "===================================="; Errors = string.Format("{0};{1}", Errors, msg); } UploadResult = "File uploaded successfully"; } catch (OutOfMemoryException) { System.Uri uri = new Uri("http://bis-dev-srv2:300/DNATestLibrary/"); (new System.Net.WebClient()).UploadDataCompleted += new UploadDataCompletedEventHandler(WebClient_UploadDataCompleted); (new System.Net.WebClient()).UploadDataAsync(uri, content); } finally { if (client.State == System.ServiceModel.CommunicationState.Faulted) { client.Abort(); UploadResult = "Upload aborted due to error"; } if (client.State != System.ServiceModel.CommunicationState.Closed) { client.Close(); } } } void WcUpload_UploadDataCompleted(object sender, UploadDataCompletedEventArgs e) { if (e != null) { UploadResult = "Upload Unuccessful"; } else { UploadResult = "Upload Successful"; //throw new NotImplementedException(); } } } } 
+2
source share
2 answers
 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; namespace UploadTester { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void btnSelectFile_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); textBox1.Text = openFileDialog1.FileName; } private void btnUpload_Click(object sender, EventArgs e) { try { byte[] content = GetByteArray(); string filename = Path.GetFileName(openFileDialog1.FileName); System.Net.WebClient webClient = new System.Net.WebClient(); System.Uri uri = new Uri("http://SP/DNATestLibrary/" + filename); webClient.Credentials = new NetworkCredential("username", "pwd", "domain"); webClient.UploadData(uri, "PUT", content); MessageBox.Show("Upload Successful"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } byte[] GetByteArray() { FileStream fileStream = new System.IO.FileStream(openFileDialog1.FileName, System.IO.FileMode.Open); byte[] content = new byte[(int)fileStream.Length]; fileStream.Read(content, 0, (int)fileStream.Length); fileStream.Close(); return content; } private void btnUploadAsync_Click(object sender, EventArgs e) { try { byte[] content = GetByteArray(); string filename = Path.GetFileName(openFileDialog1.FileName); System.Net.WebClient webClient = new System.Net.WebClient(); System.Uri uri = new Uri("http://SP/DNATestLibrary/" + filename); webClient.UploadDataCompleted += new UploadDataCompletedEventHandler(webClient_UploadDataCompleted); webClient.Credentials = new NetworkCredential("username", "pwd", "domain"); webClient.UploadDataAsync(uri, "PUT", content); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } void webClient_UploadDataCompleted(object sender, UploadDataCompletedEventArgs e) { if (e.Error == null) { MessageBox.Show("Upload Successful"); } else { MessageBox.Show(e.ToString()); } } } } 
+1
source

Shaun
For this to work, you will need to make changes to the SharePoint configuration to increase the download limit and latency. The link below shows the necessary steps to get large file downloads.

http://blogs.technet.com/b/sharepointcomic/archive/2010/02/14/sharepoint-large-file-upload-configuration.aspx

+2
source

Source: https://habr.com/ru/post/1434817/


All Articles