【问题标题】:Uploading large files from android to c# asmx web service using Multipart Entity使用 Multipart Entity 将大文件从 android 上传到 c# asmx web 服务
【发布时间】:2014-12-11 15:21:40
【问题描述】:

我通过多部分实体请求从 android 获取请求数据。如何接受该请求并将文件保存在服务器端。请检查已尝试的代码。来自android的文件是视频文件。

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public UploadFileResponse FileUpload(FileStream stream)
    {        
        JavaScriptSerializer js = new JavaScriptSerializer();
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";

        UploadFileResponse _response = null;
        bool IsFileUploaded = false;

        if (_response != null)
        {
            return _response;
        }
        else
        {
            _response = new UploadFileResponse();
        }

        try
        {

            MultipartParser parser = new MultipartParser(stream);


            if (parser.Success)
            {               
                string fileName = parser.Filename;
                string contentType = parser.ContentType;
                byte[] fileContent = parser.FileContents; 
                FileStream fileToupload = new FileStream("D:\\FileUpload\\" + fileName, FileMode.Create);
                fileToupload.Write(fileContent, 0, fileContent.Length);
                fileToupload.Close();
                fileToupload.Dispose();               

                _response.Result = true;
                _response.Message = "Success";

                stream.Close();
            }
            else
            {
                _response.Result = false;
                _response.Message = "Oops, something went wrong, please try again.";
            }
        }
        catch (Exception ex)
        {
            _response.Result = false;
            _response.Error = ex.Message;
            _response.Message = "Oops, something went wrong, please try again.";            
        }
        finally
        {

        }
        return _response;
    }

【问题讨论】:

    标签: c# asp.net web-services asmx multipartentity


    【解决方案1】:

    如果您成功地将多部分数据发送到 Web 服务,您应该能够使用 HttpContext.Current.Request 捕获传入的文件。

    以下代码会将文件保存到您的网络服务所在的当前目录。

    [WebMethod]
        public void AttachFiles()
        {
            HttpPostedFile file = HttpContext.Current.Request.Files[0];
            using (var fileStream = new System.IO.FileStream(AppDomain.CurrentDomain.BaseDirectory+file.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write))
            {
                file.InputStream.CopyTo(fileStream);
            }
        }
    

    【讨论】:

    • 嗨...我在这一行遇到异常 HttpPostedFile file = HttpContext.Current.Request.Files[0];当我点击服务时。 '索引超出范围。必须是非负数且小于集合的大小。参数名称:index'
    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2012-01-16
    • 1970-01-01
    • 2018-01-13
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多