示例#1
0
        protected virtual void CopyFile(IFileObject file, HttpContext context)
        {
            var httpFileUtils = new HttpFileUtils();

            httpFileUtils.GetFile(file, new HttpContextWrapper(context));
        }
示例#2
0
        protected virtual void ProcessRequestInternal(HttpContext context)
        {
            log.Write(LogEvent.Debug, "File upload request: {0}", context.Request.Url.ToString());

            string filesystemName = context.Request["filesystem"];

            if (String.IsNullOrEmpty(filesystemName))
            {
                throw new Exception("Parameter missed: filesystem");
            }
            var fs = AppContext.ComponentFactory.GetComponent <IFileSystem>(filesystemName);

            if (fs == null)
            {
                throw new Exception(String.Format("Component does not exist: {0}", filesystemName));
            }

            string folder = context.Request["folder"] ?? String.Empty;

            var overwrite = false;

            if (context.Request["overwrite"] != null)
            {
                Boolean.TryParse(context.Request["overwrite"], out overwrite);
            }

            var fileUtils = new HttpFileUtils();
            var result    = new List <IFileObject>();

            for (int i = 0; i < context.Request.Files.Count; i++)
            {
                var file = context.Request.Files[i];
                if (String.IsNullOrEmpty(file.FileName.Trim()))
                {
                    continue;
                }

                var blockedExtensions = AppContext.ComponentFactory.GetComponent <IList <string> >("blockedUploadFileExtensions");
                if (blockedExtensions != null && blockedExtensions.Contains(Path.GetExtension(file.FileName).ToLower()))
                {
                    throw new Exception(AppContext.GetLabel(InvalidFileTypeMessage));
                }

                var fileInput = new HttpFileUtils.InputFileInfo(file.FileName, file.InputStream)
                {
                    Folder    = folder,
                    Overwrite = overwrite
                };
                if (context.Request["imageformat"] != null)
                {
                    fileInput.ForceImageFormat = context.Request["imageformat"];
                }
                if (context.Request["image_max_width"] != null)
                {
                    fileInput.ImageMaxWidth = Convert.ToInt32(context.Request["image_max_width"]);
                }
                if (context.Request["image_max_height"] != null)
                {
                    fileInput.ImageMaxHeight = Convert.ToInt32(context.Request["image_max_height"]);
                }

                var uploadFile = fileUtils.SaveFile(fs, fileInput);
                result.Add(uploadFile);
            }

            context.Response.Write(JsUtils.ToJsonString(
                                       result.Select(f =>
                                                     new Dictionary <string, object> {
                { "name", Path.GetFileName(f.Name) },
                { "filepath", f.Name },
                { "size", f.Content.Size }
            }
                                                     ).ToArray()));
        }