Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法获取使用c创建大文件HTTP put文件的响应#_C#_Webrequest - Fatal编程技术网

C# 无法获取使用c创建大文件HTTP put文件的响应#

C# 无法获取使用c创建大文件HTTP put文件的响应#,c#,webrequest,C#,Webrequest,无法获取使用c创建大文件HTTP put文件的响应# 当用户创建的文件或文件夹上传到云端时,我正在使用文件观察服务监视器 如果文件大小超过512 MB,则获取响应的时间太长 在这里,我混淆了我的代码或服务器的问题 这一错误的原因是什么 如果我的代码有任何变化,建议我 { var fileFolderObj1 = new FileFolder(); var postURL = apiBaseUri + "/filefolder/create/file/user/" + userId

无法获取使用c创建大文件HTTP put文件的响应#

当用户创建的文件或文件夹上传到云端时,我正在使用文件观察服务监视器

如果文件大小超过512 MB,则获取响应的时间太长

在这里,我混淆了我的代码或服务器的问题

这一错误的原因是什么

如果我的代码有任何变化,建议我

{
    var fileFolderObj1 = new FileFolder();
    var postURL = apiBaseUri + "/filefolder/create/file/user/" + userId; // +"?type=file";
    code = HttpStatusCode.OK;
    HttpWebResponse response = null;
    FileInfo f = new FileInfo(filePath);
    long filesizeF = f.Length;

    try
    {
        string selectedFile = null;
        selectedFile = filePath;
        var fi = System.IO.Path.GetFileName(filePath);            

        ////commented for some reason
        var postParameters = new Dictionary<string, object>();
        postParameters.Add("file", new FileParameter(filePath,  ""));
        postParameters.Add("parentId", parentId);
        postParameters.Add("newName", fi);
        postParameters.Add("cloudId", cloudId);
        postParameters.Add("isSecure", isSecure);
        //postParameters.Add("fileSize", fi.Length);
        postParameters.Add("fileSize", filesizeF);

        var userAgent = "Desktop";
        var formDataBoundary = "----WebKitFormBoundary" + DateTime.Now.Ticks.ToString("x");

        var uri = new Uri(postURL);
        var createFileRequest = WebRequest.Create(uri) as HttpWebRequest;
        this.SetBasicAuthHeader(createFileRequest, userId, password);
        createFileRequest.ContentType = "multipart/form-data";
        createFileRequest.Method = "PUT";
        createFileRequest.Timeout =  System.Threading.Timeout.Infinite;
        createFileRequest.KeepAlive = false;/*true;*/
        createFileRequest.UserAgent = userAgent;
        createFileRequest.CookieContainer = new CookieContainer();
        try
        {
            using (var requestStream = createFileRequest.GetRequestStream())
            {        
            }

            using (response = (HttpWebResponse)createFileRequest.GetResponse())
            {
                StreamReader(response.GetResponseStream()).ReadToEnd(); 
                fileFolderObj1 = JsonConvert.DeserializeObject<FileFolder>(reslut);
            }                   
        }
        catch (Exception exc)
        {                    
            if (response != null)
            {
                code = response.StatusCode;
            }
        }               
    }
    catch (Exception exc)
    {                
    }
}       
}

    private static readonly Encoding encoding = Encoding.UTF8;

    private void WriteMultipartFormData(Dictionary<string, object> postParameters, string boundary, Stream requestStream, ILogService logService = null)
    { 
        var needsCLRF = false;
        foreach (var param in postParameters)
        {
            // Skip it on the first parameter, add it to subsequent parameters.
            if (needsCLRF)
            {
                requestStream.Write(encoding.GetBytes("\r\n"), 0, encoding.GetByteCount("\r\n"));
            }
            needsCLRF = true;
            if (param.Value is FileParameter)
            {
                var fileToUpload = (FileParameter)param.Value;
                // Add just the first part of this param, since we will write the file data directly to the Stream
                var header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
                    boundary,
                    param.Key,
                    fileToUpload.FileName ?? param.Key,
                    fileToUpload.ContentType ?? "application/octet-stream");

                requestStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
                // Write the file data directly to the Stream, rather than serializing it to a string.
                FileStream fileStream = new FileStream(fileToUpload.FileName, FileMode.Open, FileAccess.Read);

                byte[] buffer = new byte[4096];

                int bytesRead = 0;
                while ((bytesRead = fileStream.Read(buffer, 0,buffer.Length)) != 0)
                {
                    requestStream.Write(buffer, 0, bytesRead);
                    logService.Debug("WRITEMULTIPART FORM DATA Bufferlent Running :{0}", bytesRead);
                }
                fileStream.Close();


            }
            else
            {
                var postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
                    boundary,
                    param.Key,
                    param.Value);
                requestStream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
            }
        }

        // Add the end of the request.  Start with a newline
        var footer = "\r\n--" + boundary + "--\r\n";

        requestStream.Write(encoding.GetBytes(footer), 0, encoding.GetByteCount(footer));

    }
}
{
var fileFolderObj1=新的FileFolder();
var postrl=apiBaseUri+“/filefolder/create/file/user/”+userId;//+“?type=file”;
代码=HttpStatusCode.OK;
HttpWebResponse响应=null;
FileInfo f=新的FileInfo(filePath);
long filesizeF=f.长度;
尝试
{
字符串selectedFile=null;
selectedFile=filePath;
var fi=System.IO.Path.GetFileName(文件路径);
////出于某种原因评论
var postParameters=新字典();
添加(“文件”,新文件参数(文件路径“”);
后参数。添加(“parentId”,parentId);
后参数。添加(“新名称”,fi);
后参数。添加(“cloudId”,cloudId);
后参数。添加(“isSecure”,isSecure);
//添加(“文件大小”,fi.Length);
添加(“文件大小”,filesizeF);
var userAgent=“桌面”;
var formDataBoundary=“----WebKitFormBoundary”+DateTime.Now.Ticks.ToString(“x”);
var uri=新uri(postrl);
var createFileRequest=WebRequest.Create(uri)为HttpWebRequest;
此.SetBasicAuthHeader(createFileRequest、用户ID、密码);
createFileRequest.ContentType=“多部分/表单数据”;
createFileRequest.Method=“PUT”;
createFileRequest.Timeout=System.Threading.Timeout.Infinite;
createFileRequest.KeepAlive=false;/*true*/
createFileRequest.UserAgent=UserAgent;
createFileRequest.CookieContainer=新的CookieContainer();
尝试
{
使用(var requestStream=createFileRequest.GetRequestStream())
{        
}
使用(response=(HttpWebResponse)createFileRequest.GetResponse()
{
StreamReader(response.GetResponseStream()).ReadToEnd();
fileFolderObj1=JsonConvert.DeserializeObject(reslut);
}                   
}
捕获(异常exc)
{                    
if(响应!=null)
{
代码=response.StatusCode;
}
}               
}
捕获(异常exc)
{                
}
}       
}
私有静态只读编码编码=Encoding.UTF8;
私有void WriteMultipartFormData(字典后参数、字符串边界、流请求流、ILogService logService=null)
{ 
var needsCLRF=假;
foreach(后参数中的var参数)
{
//跳过第一个参数,将其添加到后续参数。
如果(需要SCLRF)
{
Write(encoding.GetBytes(“\r\n”)、0、encoding.GetByteCount(“\r\n”);
}
needsCLRF=true;
if(param.Value为FileParameter)
{
var fileToUpload=(FileParameter)param.Value;
//只添加此参数的第一部分,因为我们将直接将文件数据写入流
var header=string.Format(“--{0}\r\n内容配置:表单数据;名称=\“{1}\”;文件名=\“{2}\”\r\n内容类型:{3}\r\n\r\n”,
边界,
参数键,
fileToUpload.FileName??参数键,
fileToUpload.ContentType??“应用程序/八位字节流”);
Write(encoding.GetBytes(header),0,encoding.GetByteCount(header));
//将文件数据直接写入流,而不是将其序列化为字符串。
FileStream FileStream=新FileStream(fileToUpload.FileName,FileMode.Open,FileAccess.Read);
字节[]缓冲区=新字节[4096];
int字节读取=0;
而((bytesRead=fileStream.Read(buffer,0,buffer.Length))!=0)
{
写入(缓冲区,0,字节读取);
调试(“WRITEMULTIPART FORM DATA Bufferlent正在运行:{0}”,字节读取);
}
fileStream.Close();
}
其他的
{
var postData=string.Format(“--{0}\r\n内容配置:表单数据;名称=\“{1}\”\r\n\r\n{2}”,
边界,
参数键,
参数值);
Write(encoding.GetBytes(postData),0,encoding.GetByteCount(postData));
}
}
//添加请求的结尾。以换行符开头
var footer=“\r\n--”+boundary+“--\r\n”;
Write(encoding.GetBytes(footer),0,encoding.GetByteCount(footer));
}
}

你的超时设置为什么?你能解释更多关于你的问题@bugfinder你对
或file is di是什么意思吗?对不起,这是json对象你的超时设置为什么?你能解释更多关于你的问题@bugfinder你对
或file is di是什么意思吗?对不起,这是json对象