File upload modification for client applications
By introducing a simulated upload event generator and an embedded listener into the browser system, combined with a proxy server strategy, the problem of being unable to control the upload of file or directory subsets in existing technologies is solved, achieving flexible and secure file upload control.
Patent Information
- Application Number
- CN202180038840.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-05-29
- Filing Date
- 2021-03-30
- Publication Date
- 2026-02-27
- Estimated Expiration
- 2041-03-30
AI Technical Summary
Existing browser systems cannot modify upload events when uploading files or directories, causing the system to either transmit all files or reject all files, making it impossible to control the upload of a subset of files or directories according to policies.
A simulated upload event generator and an embedded upload event listener are introduced into the client computing device to generate simulated upload events and data transfer objects. The upload of files or directories is processed and controlled through an event handler, including operations such as renaming and encryption. The file upload strategy is implemented in conjunction with the proxy server's strategy.
It enables flexible control over file or directory uploads based on policies, allowing or blocking the upload of specific files or directories, thus improving the flexibility and security of file uploads.
Smart Images

Figure CN115698986B_ABST
Abstract
Description
Background Technology
[0001] Web pages presented in a browser interface often provide interactive components, such as drag-and-drop mechanisms and / or dialog boxes, allowing users to select files or directories to upload to a remote system, such as a server. For example, when a user drags a file or directory into a dropdown menu component on a webpage, the software on the client device receives an upload event, dispatches it to an event handler to retrieve the file (or a list of files in a directory), and transfers the file to a specific remote system. The upload event propagates without modification. Furthermore, when multiple files are uploaded in a single event, the system either transfers all files or rejects the upload. Going further, an upload event triggered by dragging a directory into a dropdown menu will upload all files. Summary of the Invention
[0002] This abstract is provided to introduce selected concepts in a simplified form, which will be further described in the detailed description below. This abstract is not intended to identify key or essential features of the subject matter of the claims, nor is it intended to limit the scope of the subject matter of the claims.
[0003] A method and system are provided in a client computing device that can modify upload events before actual upload. In one aspect, the client computing device includes a system comprising a browser, a simulated upload event generator, a dispatcher, and an event handler. The browser is configured to render web pages. The simulated upload event generator includes program code configured to generate simulated upload events and corresponding simulated data transfer objects for uploading data using the web page. This program code is configured to execute in the client computing device. The dispatcher is configured to propagate the simulated upload events and corresponding simulated data transfer objects to upload event listeners on the web page. The event handler is configured to execute the simulated upload events.
[0004] In some embodiments, the client computing device includes an embedded upload event listener. Before the simulated upload event generator generates simulated upload events and simulated data transfer objects, the embedded upload event listener is configured to: intercept received upload events, read received upload events, discard received upload events from the upload event handler pipeline, and invoke code to execute logic on the received upload events.
[0005] Further features and advantages of the embodiments, as well as the structure and operation of various embodiments, will be described in detail below with reference to the accompanying drawings. It should be noted that the method and system are not limited to the specific embodiments described herein. Such embodiments presented herein are for illustrative purposes only. Other embodiments will be apparent to those skilled in the art based on the teachings contained herein. Attached Figure Description
[0006] The accompanying drawings, which are incorporated herein and constitute part of the specification, illustrate embodiments of the application and, together with the description, further serve to explain the principles of the embodiments and to enable a person skilled in the relevant art to make and use the embodiments.
[0007] Figure 1 is a block diagram of a system to generate a simulated upload event in a web page to process a file uploaded from a client device, according to example embodiments.
[0008] Figure 2 is a flow diagram of a method to provide a simulated upload event to process a file uploaded from a client device, according to example embodiments.
[0009] Figure 3 is a block diagram of a system to intercept a received upload event by an embedded upload event listener and generate a simulated upload event based on the received upload event, according to example embodiments.
[0010] Figure 4 is a flow diagram of a method to provide for intercepting a received upload event by an embedded upload event listener and invoking code to perform logic on the received upload event, according to example embodiments.
[0011] Figure 5 is a flow diagram of a method to provide for sending a query to a server regarding a received upload event and receiving a response including instructions to generate a simulated upload event, according to example embodiments.
[0012] Figure 6 is an example block diagram of a processor-based computer system that can be used to implement various embodiments.
[0013] The features and advantages of the embodiments described herein will become more apparent from the detailed description in conjunction with the accompanying drawings in which like reference characters designate corresponding elements throughout the drawings. In the drawings, like reference numbers generally indicate identical, functionally similar, and / or structurally similar elements. The drawing in which an element first appears is indicated by the left-most digit(s) in the corresponding reference number. DETAILED DESCRIPTION
[0014] I. INTRODUCTION
[0015] The specification and drawings are directed to one or more embodiments that include the features of the disclosed embodiments. The scope of the embodiments is not limited to the aspects described in this specification. Instead, the specification is merely an example of the extent of the contemplated scope, modifications of the disclosed embodiments being included therein. The embodiments are defined by the claims appended hereto which are attached hereto.
[0016] As used in the description herein, "one embodiment", "an embodiment", "exemplary embodiment", etc. means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase in various places in the specification are not necessarily all referring to the same embodiment.
[0017] Furthermore, it should be understood that spatial descriptions (e.g., "upper", "lower", "upward", "left", "right", "downward", "top", "bottom", "vertical", "horizontal", etc.) used herein are for purposes of illustration only, and that practical implementations of the structures described herein can be spatially arranged in any direction or manner.
[0018] In the discussion, unless otherwise stated, adjectives such as "substantially", "approximately", and "about" modifying a condition or relationship are utilized to indicate that a value, condition, or relationship that is "substantially", "approximately", or "about" the defined value, condition, or relationship to operate within a range of values and / or relationship that one of ordinary skill in the art would consider acceptable.
[0019] Numerous exemplary embodiments are described below. It is noted that the titles of any sections / sub-sections provided herein are not meant to be limiting. Embodiments are described throughout this document, and embodiments of any type can be included under any section / sub-section. Furthermore, embodiments disclosed in any section / sub-section can be combined with any other embodiments described in the same section / sub-section and / or different section / sub-section in any manner.
[0020] II. Exemplary Embodiments.
[0021] As described above, current browser-based systems have limited capabilities when uploading files or directories of files to a remote system, such as a server. For example, a user can trigger an upload event in a web page using an interactive component, such as a drag-and-drop box or a dialog box, to select files or directories for upload. For example, files, multiple files, directories, multiple directories, or a combination thereof (i.e., one or more files and / or one or more directories) can be selected for upload. However, once the upload event is received, the event handler cannot modify the event. For example, the contents of the files or the names of the files selected for upload cannot be modified. Additionally, when uploading a group of files or files of a directory using a drag-and-drop box or a dialog box of a web page, the system either allows all of the files to be transferred or rejects the upload of all of the files. The system does not allow a subset of the files to be transferred while preventing the transfer of another subset of the files included in the upload event. Furthermore, when a directory of files is dragged and dropped for an upload operation, individual files within the directory cannot be prevented from being uploaded based on an upload policy.
[0022] Described herein are example embodiments for controlling file and directory upload events (associated with a web page) to a remote device such as a server by generating a simulated upload event. For example, a simulated upload event and corresponding simulated data transfer object (e.g., event object) suitable for processing by a browser can be generated for uploading one or more files and / or one or more directories. The simulated data transfer object can include or indicate the files and / or directories specified for upload and corresponding metadata. The browser dispatches the simulated upload event and corresponding simulated data transfer object, propagating through a path of a document object model (DOM) tree, to a simulated upload event listener registered in the DOM tree. The simulated upload event and simulated data transfer object can then propagate through one or more event handlers (e.g., a chain of event handlers) to process the one or more files and / or one or more directories and perform the upload operation according to the simulated upload event and simulated data transfer object. In some embodiments, a web page element (e.g., a button, a drag-and-drop box, an input dialog, etc.) can be presented in the web page to receive user input to trigger execution of the simulated upload event. In other embodiments, the simulated upload event can be triggered by a non-user event, such as a timer output, a DOM reaching a ready state, or other state change of an element in the DOM tree, or can be triggered in other ways.
[0023] In some embodiments, the user-activated interactive element that triggers the generation of a simulated event for an upload operation can be an existing input element in a web page for selecting a file or directory for upload, such as a dialog box or drop-down box for a drag-and-drop operation (e.g., to upload a file and / or directory to a server). When the existing upload input element is activated by a user, an upload event is received. A simulated upload event listener can be embedded in an element of the DOM tree, above (before) any other DOM elements, that contains a registered event listener to capture the received upload event (e.g., triggered by a drag-and-drop or dialog box input). The embedded simulated upload event listener can capture, read, and / or analyze the received upload event, and can remove the received upload event from the event handling flow of the DOM. The embedded simulated upload event listener can invoke (synchronously or asynchronously) code to perform logic related to the received upload event. For example, the invoked code can generate a simulated upload event and a simulated data transfer object suitable for processing by the browser (e.g., based on the received upload event) to replace the received upload event. As described above, the simulated data transfer object can include the file and / or directory specified in the received upload event (e.g., specified according to a drag-and-drop gesture or selection in a dialog box). The embedded simulated upload event listener can send the simulated event (e.g., as a parameter) with the simulated data transfer object to the event handler, and it can propagate through one or more event handlers to process one or more files and / or one or more directories, and perform the upload operation according to the simulated upload event and simulated data transfer object.
[0024] In some embodiments, the simulated upload event can be generated based on the originally received (or existing) upload event. For example, the simulated upload event can include more, less, or different processing steps than the received upload event. In some embodiments, the simulated upload event can add steps to modify the content of one or more files (e.g., encrypt the files) and / or rename one or more files prior to the upload operation. In some embodiments, the simulated upload event can indicate that the upload of a portion or subset of the files or directories indicated in the simulated data transfer object can be blocked, while the upload of other files indicated in the data transfer object can be allowed. Further, individual files in a directory selected by a user for an upload operation in a drag-and-drop gesture can be allowed or blocked based on a check of an upload policy. The upload policy can be stored locally on the client computing device, or on a remote device such as a proxy server or network server.
[0025] In some embodiments, an embedded simulated upload event listener sends a query to a proxy server. This query includes a request for a specified file and / or directory. In its response to the embedded simulated event listener, the proxy server returns instructions to process the file and / or directory before uploading it to the service provider's server, or to refuse the upload of one or more files and / or directories. The proxy server can determine the instructions based on a file upload policy applicable to the upload request. For example, the upload policy may specify criteria for taking certain actions, or indicate how to handle certain types of files or directories (e.g., modify file content, encrypt file content, rename files, refuse the transfer of certain types of files, etc.). A simulated event generator generates simulated upload events and corresponding simulated data transfer objects based on the instructions returned from the proxy server.
[0026] The simulated upload event generator described in this article can take various forms, for example, as scripting language code (e.g., developed by the Mozilla Foundation in Mountain View, California). Browser extensions written by , script language code that alters existing events received via web page elements, new script language code, script language code injected as a hook library in a web page, or other script language code.
[0027] Examples of methods for generating simulated upload events in a webpage can be implemented in various ways. For example, Figure 1 This is a block diagram of a system 100 according to an exemplary embodiment, which generates simulated upload events in a webpage to process files uploaded from a client device. Figure 1 As shown, system 100 includes a client computing device 102 and a service provider server 120, which are communicatively coupled via a network 130. The client computing device 102 includes a browser 104 that renders a web page 106. The web page 106 includes a simulated upload event generator 108, a simulated upload event 110, a simulated data transfer object 112, a dispatcher 114, an upload event listener 116, and an event handler 118.
[0028] Client computing device 102 can be any suitable computing device, such as a mobile computing device (e.g., Devices, personal digital assistants (PDAs), laptops, notebook computers, such as Apple iPads TM Tablets, netbooks, etc.), mobile phones (e.g., cell phones, smartphones such as Apple's iPhone, etc.) Android TM Operating system mobile phones, Microsoft Mobile phones, etc.), and wearable computing devices (e.g., including such as...). GlassTM Oculus by Oculus VR, LLC head-mounted devices such as smart glasses, stationary computing devices such as desktop computers or PCs (personal computers), gaming consoles / systems (e.g., Microsoft Sony Nintendo or appliances, set-top boxes, etc.
[0029] The service provider server 120 is implemented in one or more computing devices, such as a desktop computer, a server, a mobile device, etc. The service provider server 120 is configured to respond to requests received from the client computing device 102 over the network 130. The service provider server 120 can be a web server that includes one or more websites and can handle incoming web requests received from the client computing device 102 over the network 130 using the Hypertext Transfer Protocol (HTTP) and other related protocols. The service provider server 120 can be configured to store, process, and deliver web pages and content to the client computing device 102. For example, a web page delivered to the client computing device 102 can include a Hypertext Markup Language (HTML) file that can include images, hyperlinks, files, style sheets, scripts, graphics, textual content, etc. The network 130 can be or include any type of communication network, including a local area network (LAN), a wide area network (WAN), a personal area network (PAN), or a combination of communication networks, such as the Internet.
[0030] The client computing device 102 is configured to communicate with the service provider server 120 over the network 130. The client computing device 102 can be configured to transmit requests to the service provider server 120 to access services provided thereby. For example, the web browser 104 can be a client application running in the client computing device 102 that is configured to connect to the web server of the service provider server 120 and retrieve web pages, such as the web page 106, to present on the client computing device 102. In one embodiment, the browser 104 is configured to build a DOM tree based on the web page 106, render the content of the web page 106, and display the web page 106 in a display area of the user interface of the client computing device 102 (e.g., in a tab of the browser 104).
[0031] In some embodiments, web page 106 is accessed from service provider server 120 when web browser 104 receives a Uniform Resource Locator (URL) address as user input through the address bar (not shown) of web browser 104. Web page 106 is a file that can be written in HTML (Hypertext Markup Language) or other suitable languages, and may include or reference scripting languages (such as... The executable code is written to implement dynamic behavior. Web page 106 can be rendered in web browser 104 to include interactive elements (e.g., drag-and-drop boxes, dialog boxes, buttons, etc.) for receiving user input. For example, interactive elements can be used to initiate a file or directory upload operation to upload one or more files and / or one or more directories to the service provider 120 server.
[0032] Note that although embodiments are frequently discussed herein Scripting languages and Scripts are used, but they are discussed for illustrative purposes, and further scripting language types apply in the embodiments.
[0033] Simulated upload event generator 108 may include script language code configured to generate simulated upload event 110 and simulated data transfer object 112 (e.g., This is to process and upload files and / or directories to the service provider server 120. The simulated upload event 110 can be a scripting language event object (e.g., ...). Events can be invoked by calling The simulated upload event 110 is created using a constructor in the browser 104. The simulated data transfer object 112 can be generated separately or included in the simulated upload event 110. The simulated data transfer object 112 is a valid data structure of the browser 104. The structure of the simulated data transfer object 112 simulates or mimics the structure of a data transfer object, which would otherwise be created locally by the browser 104. In other words, one of the properties in the simulated upload event 110 is the simulated data transfer object 112, whose structure is simulated by calling an existing... The structure of the object created by the constructor. The mock data transfer object 112 holds data that is selected for upload to the service provider server 120. The mock upload event 110 is configured to cause a simulated or altered execution flow for file or directory processing and / or upload actions. The mock upload event 110 can cause analysis and / or processing of the file or directory prior to transmission of the file and / or directory to the service provider server 120. The mock data transfer object 112 can be used for processing and / or upload operations. For example, the mock data transfer object 112 can include metadata such as a file name or file size, or the contents of the file. In some embodiments, the metadata of the mock data transfer object 112 can also include file locations in a directory and / or subdirectory.
[0034] The dispatcher 114 can include code configured to schedule the mock upload event 110 (including the mock data transfer object 112 as a parameter) to the execution flow of the web page 106 to perform processing and upload operations on the file specified (or included) in the mock data transfer object 112 according to the mock upload event 110. For example, the upload event listener 116 can receive the mock upload event 110 and the mock data transfer object 112 from the dispatcher 114 and forward them to the event handler 118 for propagating the execution flow according to the mock upload event 110 and the mock data transfer object 112. In some embodiments, the event handler 118 can include multiple event handlers (e.g., a chain of event handlers through which the mock upload event 110 and / or the mock data transfer object 112 are propagated).
[0035] The mock upload event generator 108 can be triggered to execute in various ways. For example, a button can be presented in the web page 106 that is configured to receive user input (e.g., a click) that triggers the mock upload event generator 108 to generate the mock upload event 110 and the mock data transfer object 112. In another example, a timer can be configured in the web page 106 or the browser 104 to trigger the mock upload event generator 108 to produce the mock upload event 110 and the mock data transfer object 112 periodically or at one or more specified times. In another example, the mock upload event generator 108 can be triggered to generate the mock upload event 110 and the mock data transfer object 112 when the web page 106 is fully loaded into the browser 104, or based on the progress of an asynchronous task.
[0036] In some embodiments, the upload event listener 116 and / or the event handler 118 can be registered in the DOM tree of the web page 106 and can be defined to perform one or more operations on one or more files and / or one or more directories before transmitting the same to the service provider server 120. For example, the event handler 118 can be configured to rename a file before uploading the file (e.g., rename the file to include a username or date in the file name, etc.). In another example, the event handler 118 can be configured to modify the content of one or more files before the upload operation (e.g., encrypt the file or edit portions of the content of the file, etc.). In another example, the event handler 118 is configured to analyze the simulated upload event 110 and the simulated data transfer object 112 and determine whether an upload operation should be allowed or blocked for each file or directory specified. For example, the event handler 118 can be configured to analyze each file of a directory with respect to defined upload criteria or policies before uploading the directory and can only upload files of the directory that meet the criteria or satisfy the policies. Additionally, the event handler 118 can be configured to modify one or more files of a directory to meet the criteria or policies before uploading the directory or one or more files from the directory. Further, the event handler 118 can be configured to change a list of files in a directory or create a file system to upload to the service provider server 120.
[0037] In one embodiment, the event handler 118 is configured to create one or more files to be uploaded to the service provider server 120. For example, a file upload button element can be added to the web page 106 as a browser extension (e.g., using script code). Unlike existing file upload drag-and-drop input elements or file upload dialog input elements, which can allow a user to select one or more files and / or one or more directories for upload, user input (e.g., a click) received at the browser extension file upload button can trigger the simulated upload event generator 108 to generate the simulated upload event 110 and the simulated data transfer object 112. The simulated upload event 110 can be captured by the event listener 116 and propagated through the event handler 118. The event listener 116 can be configured to create a new file, populate the file with some content, and upload the new file to the service provider server 120. This example use case can allow a developer to test the upload process of a website by generating a new file and uploading it to the service provider server 120.
[0038] The simulated upload event generator 108 can be configured in various ways. For example, the simulated upload event generator 108 can be a browser extension, including a script in a script language (e.g., JavaScript®), that is configured to generate the simulated upload event 110 and the simulated data transfer object 112 in response to a user input received at the file upload button element. In another example, the simulated upload event generator 108 can be a script in a script language (e.g., JavaScript®) that is configured to generate the simulated upload event 110 and the simulated data transfer object 112 in response to a user input received at the file upload button element. code written by a developer. In another example, the simulated upload event generator 108 can include a hook library that includes hooks configured to intercept a received upload event passed to a DOM and generate a simulated upload event 110 and simulated data transfer object 112 to propagate in a "simulation" execution flow (e.g., for modifying a file or modifying an upload operation) that is different from a normal execution flow of the received upload event. The "simulation" execution flow can include processing by the event handler 118.
[0039] In embodiments, the system 100 can operate in various ways to perform its functions. For example, Figure 2 is a flowchart 200 providing a method for generating a simulated upload event 110 from a web page 106 for processing a file to be uploaded from a client device 102, in accordance with one example embodiment. In one embodiment, the flowchart 200 can be performed by the client computing device 102, and in particular by the browser 104. For purposes of illustration, the flowchart 200 is described with reference to the system 100, the client computing device 102, and the browser 104. Figure 1 Figure 2 of the flowchart 200.
[0040] Figure 2 The flowchart 200 begins at step 202. In step 202, a web page is rendered in a browser of a client computing device. For example, the browser 104 can receive a URL from a user input that is directed to the web page 106 at the service provider server 120. The browser 104 can send a request to the service provider server 1020 for the web page 106 and, in response, receive the web page 106 from the service provider server 120. The browser 104 then renders the web page 106, retrieving objects (e.g., images, videos, etc.) indicated in the web page 106 as needed for rendering. In some embodiments, the web page 106 can include interactive elements (e.g., a drag-and-drop box, a dialog box, a browser extension button for simulated upload events, etc.) for receiving user input. The interactive elements can be used to initiate a file and / or directory upload operation to process and upload one or more files and / or one or more directories to the service provider 120 server. The browser 104 can build a DOM for the web page 106 and register the upload event listener 116 and the event handler 118 in one or more elements of the DOM.
[0041] In step 204, program code configured to execute in the client computing device generates a simulated upload event and a corresponding data transfer object for uploading data using the web page. For example, simulated upload event generator 108 can execute in client computing device 102 to generate simulated upload event 110 and simulated data transfer object 112 for processing and / or uploading one or more files and / or one or more directories from client computing device 102 to service provider server 120 through network 130. Execution of simulated upload event generator 108 can be triggered in various ways, for example, by user input in an element presented in web page 106 (e.g., a click event), or by a non-user event, such as a timer output, a DOM reaching a ready state, or other state change in an element in the DOM tree. Simulated data transfer object 112 can include metadata such as file name, file size, or file content. In some embodiments, simulated data transfer object 112 can also include file locations in a directory and / or subdirectories. In some embodiments, simulated upload event generator 108 can create a new file to upload, populate the new file with content, and include the new file (or specify the new file) in simulated data transfer object 112. Alternatively or additionally, simulated upload event generator 108 can create a directory of files to upload and include it (or specify it) in simulated data transfer object 112.
[0042] In step 206, the simulated upload event and the corresponding data transfer object are propagated to an upload event listener of the web page. For example, dispatcher 114 can dispatch simulated upload event 110 with simulated data transfer object 112 included as a parameter to the execution flow of the DOM of web page 106. For example, upload event listener 116 can receive simulated upload event 110 and simulated data transfer object 112 from dispatcher 114 and forward them to event handler 118 to propagate an execution flow based on simulated upload event 110 and simulated data transfer object 112. In some embodiments, event handler 118 can include multiple event handlers, (e.g., a chain of event handlers through which simulated upload event 110 and / or simulated data transfer object 112 are propagated).
[0043] In step 208, a simulated upload event is executed. For example, the event handler 118 can process or create one or more files and / or one or more directories specified in the simulated data transfer object 112 and upload the one or more files and / or one or more directories to the service provider server 120 through the network 130. As described above, in one example, the event handler 118 can rename one or more files prior to uploading the files (e.g., rename the files to include a username or date in the file name, etc.). In another example, the event handler 118 can modify the contents of one or more files prior to the upload operation (e.g., encrypt a file or edit portions of a file, etc.). In another example, the event handler 118 can analyze the simulated upload event 110 and the simulated data transfer object 112 and determine whether an upload operation should be allowed or denied for each file specified. For example, prior to uploading a directory of files, the event handler 118 can analyze each file in the directory relative to defined upload criteria or policies and only upload the files in the directory that meet the criteria or satisfy the policies. Additionally, the event handler 118 can modify one or more specified files to satisfy the criteria or policies prior to uploading the one or more files from the directory to the service provider server 120. Further, the event handler 118 can alter the list of files in a directory or create a file system to upload to the service provider server 120. In one embodiment, the event handler 118 is configured to create one or more files to upload to the service provider server 120. For example, based on a user input trigger through an element in the web page 106, or based on a non-user-occurring trigger in the web page 106 or the browser 104 (e.g., a timer output, a DOM state, etc.), the simulated upload event generator 108 can generate the simulated upload event 110 and the simulated data transfer object 112. The simulated upload event 110 and the simulated data transfer object 112 can be captured by the event listener 116 and propagated through the event handler 118. The event handler 118 can create a new file, populate the file with content, and upload the new file to the service provider server 120.
[0044] Embodiments for generating simulated upload events in web pages can be implemented in various ways. For example, Figure 3 FIG. 3 is a block diagram of a system 300 for intercepting a received upload event by an embedded upload event listener and generating a simulated upload event from the received upload event, according to one example embodiment. As shown in FIG. 3, the system 300 includes a web page 306, a browser 304, a simulated upload event generator 308, a simulated data transfer object 312, an event listener 316, an event handler 318, and a service provider server 320. Figure 3As shown, system 300 includes elements of system 100 and other elements. System 300 includes client computing device 102, service provider 120, and proxy server 350, which are all communicatively coupled through network 130. Client computing device 102 includes browser 104, which loads and renders web page 106. Web page 106 includes simulated upload event generator 108, simulated upload event 110, simulated data transfer object 112, dispatcher 114, upload event listener 116, event handler 118, embedded upload event listener 352, event modification code 354, and input element 356. Proxy server 350 includes a spoofed event command generator 362. These features of system 300 are further described below.
[0045] In some embodiments, simulated upload event generator 108 can generate simulated upload event 110 and simulated data transfer object 112 by modifying actual file upload events that are triggered based on a drag-and-drop or selection of a file from a dialog box in web page 106. One problem that arises when modifying file uploads is that different web services have different protocols between the client and the server (e.g., form multipart, different AJAX methods, JSON post). However, web browsers tend to implement the same API for receiving files from the client itself, regardless of the client-server protocol implementation. Examples of the API include (1) dragging and dropping a file and / or directory (e.g., folder) into the browser; and (2) selecting a file and / or directory from a dialog box (e.g., selecting a file from a dialog box). By filtering these APIs at the first (i.e., top-most) DOM element in the capture phase, all file upload attempts can be modified or selectively allowed or blocked (including selectively allowing or blocking individual files in a directory according to a policy), while ensuring that no file content is read by the browser without approval. <input type="file">
[0046] Embedded upload event listener 352 is configured to intercept a received upload event that is triggered when a user initiates an upload operation by dragging and dropping a file and / or directory or selecting a file and / or directory from a dialog box in input element 356 of web page 106 (as described above). For example, in the case where web page 106 receives user input that initiates a file upload operation by dragging and dropping or dialog box input element 356, a event is created. The Event propagation consists of three phases: (1) capture (downward), (2) target, and (3) bubbling (upward). An embedded event listener 352 can be registered during the capture phase of the DOM tree (e.g., on the DOM window or the topmost object) during DOM initialization, so that the code of the embedded event listener 352 is the first code executed in response to a user attempting to upload a file using drag-and-drop or a dialog file selection on the input element 356. Thus, the embedded event listener 352 is configured to intercept the original... event.
[0047] By intercepting the original upload request triggered by the user based on drag-and-drop or dialog box input. Events, the embedded upload event listener 352 can preempt the original The event is processed normally through the pipeline, providing an alternative process for file or directory upload control. For example, an embedded upload event listener 352 can read the raw received upload event from the normal upload event processing pipeline and synchronously or asynchronously invoke event modification code 354 of the simulated event generator 108. Event modification code 354 is configured to execute logic on the raw received upload event to generate a simulated upload event 110. For example, event modification code 354 can modify or replace the raw... The event generates a simulated upload event 110 and a simulated data transfer object 112, which can propagate in the simulated or modified execution flow via the event handler 118. In this regard, the event modification code 354 of the simulated upload event generator 108 can be script code injected into the web page 106 as a hook library.
[0048] Simulated upload event 110 can trigger an event that is more powerful than the received original upload. The event may involve more, fewer, or different processing steps. For example, a simulated upload event 110 may trigger additional steps for modifying the content of one or more files (e.g., encrypting files) and / or renaming one or more files. In some implementations, a simulated upload event 110 may result in the blocking of uploads of a subset of files or directories indicated in the simulated data transfer object 112, while other files may be allowed to be uploaded. Furthermore, the denial or permission of upload operations to one or more files, directories, and / or directories may be determined based on an examination of an upload policy, which may be stored on a local or remote device of the client computing device 102, such as a proxy server 350 or a service provider server 120.
[0049] As described above, the simulated upload event generator 108 can take various forms. For example, the simulated upload event generator 108 can be or include a browser extension, which can be written in a scripting language (e.g., ...). In another example, the simulated upload event generator 108 can include script language code that changes an existing event (e.g., an event triggered by a drag-and-drop or dialog box input), such as event modification code 354. In another example, the simulated upload event generator 108 can include new script language code related to a non-user event trigger or input by a user of a new input element (e.g., an upload button) of the web page 106. In another example, the simulated upload event generator 108 can include script language code injected into the web page 106 as a hook library.
[0050] Generally, in networked computer systems, proxy services are sometimes used to monitor internet traffic and enforce policy restrictions on user activity. However, when a user of a client device uses a client application (e.g., a browser application or a word processing application) executing on the client, the proxy service can be unable to monitor activity by the user using the client application. For example, when a user uploads a file from the client computing device 102, the proxy server 350 can be unable to detect the user's action in order to be able to apply policy rules, such as file or directory upload policies defined by an administrator of the tenant domain. As a result, the user can be able to perform actions that the administrator sought to prevent when defining the policy rules (e.g., upload unencrypted files or upload certain restricted files).
[0051] The system 300 can operate in various ways to perform its functions. For example, Figure 4 is a flowchart 400 providing a method for intercepting a received upload event by an embedded upload event listener and invoking code to perform logic on the received upload event, according to one example embodiment. In one embodiment, the flowchart 400 can be performed by the client computing device 102. For illustrative purposes, reference is made to the system 300 of FIG. 3. Figure 3 The flowchart 400 of FIG. 4 is described as follows. Figure 4 The flowchart 400 of FIG. 4 is described as follows.
[0052] The flowchart 400 begins at step 402. In step 402, an embedded upload event listener intercepts a received upload event. For example, when a user uses a drag-and-drop box or dialog box of the input element 356 to select one or more files and / or one or more directories for upload, the original upload event can be triggered by the received input. The dispatcher 114 can dispatch the original upload event to the DOM. The embedded upload event listener 352 can be registered above the event listeners that normally capture the original upload event, such that the code of the embedded event listener 352 first captures the original event. In one example, the embedded event listener 352 can be registered during initialization of the DOM on the window (e.g., the top-most object) on the DOM at the capture phase, such that the code of the embedded event listener 352 is the first code to run when a user attempts to perform a file upload with a file selection through a drag-and-drop box or dialog of the input element 356, thereby intercepting the original upload event.
[0053] In step 404, the received upload event is read. For example, the embedded upload event listener 352 can read and / or analyze the original upload event. In one embodiment, the embedded upload event listener 352 determines that the original event is of a type that is to be discarded in favor of a substitute, or is to be modified. For example, the event type can be related to a particular user interface element that triggered the event, a particular in-page event type, or other event types that are desired to be discarded or modified (e.g., in a list of event types for discarding or modifying).
[0054] In step 406, the received upload event is discarded from the upload event handler pipeline. For example, the embedded event listener 352 can discard the original upload event from the normal execution flow of the event handler that is registered in the DOM to handle upload events triggered by a file selection input for an upload operation from a drag-and-drop box or dialog of the input element 356.
[0055] In step 408, the embedded event listener synchronously or asynchronously invokes code to perform logic on the received upload event. For example, the embedded event listener 352 can invoke the event modification code 354 of the simulated upload event generator 108 to generate a simulated upload event 110 and corresponding simulated data transfer object 112. As described above, the event modification code 354 can modify or replace the original upload event with the simulated upload event 110, which can trigger more, less, or different processing steps than the received original upload event. For example, the simulated upload event 110 can include additional steps for modifying content and / or renaming one or more files, or for allowing or blocking a subset of files or directories indicated in the simulated data transfer object 112. Further, the upload of one or more files of a directory can be individually allowed or blocked based on a check of an upload policy, which can be stored on a local or remote device of the client computing device, such as the proxy server 350 or the service provider server 120.
[0056] Referring again to Figure 3In some embodiments, the system 300 includes a proxy server 350. The proxy server 350 can be communicatively coupled with the service provider server 120 and the client computing device 102 over the network 130. The service provider server 102 can support services and / or content that can be accessed by the client computing device 102 through the proxy server 350 over the network 130. When the client computing device 102 attempts to access content and / or services on the service provider server 120 (e.g., upload one or more files and / or one or more directories to the service provider server 120), the access can be monitored, controlled, and / or routed through the proxy server 350.
[0057] The proxy server 350 can include a simulated event instruction generator 362 that includes code to apply rules and / or policies to requests from the client computing device 102 to upload one or more files and / or one or more directories to the service provider server 120.
[0058] In some embodiments, prior to generating the simulated upload event 110, the simulated upload event generator 108 is configured to send a query 358 to the proxy server 350 over the network 130. The query 358 can include a request to upload one or more files and / or one or more directories to the service provider server 120. The query 358 can identify the one or more files and / or one or more directories and include metadata about the one or more files and / or one or more directories. Alternatively or additionally, the query 358 can include the one or more files and / or one or more directories indicated in the request. The simulated event instruction generator 362 of the proxy server 350 can be configured to determine instructions to send in a response 360 to the embedded simulated event listener 352 to process the one or more files and / or one or more directories prior to the upload operation (e.g., modify file content or rename files). Alternatively or additionally, the simulated event instruction generator 362 can be configured to determine instructions to send in the response 360 that individually reject or allow the upload of the one or more files, the one or more directories, and / or the one or more files of the directory of the query 358. The simulated event instruction generator 362 can be configured to determine the instructions based on file upload policies and or rules that apply to the upload request. For example, the upload policies can indicate criteria to take certain actions or indicate how to process certain files or directories (e.g., modify file content, encrypt file content, rename files, reject the transfer of certain types of files and / or directories, etc.). The simulated event generator 108 can be configured to receive the instructions in the response 360 and generate the simulated upload event 110 and corresponding simulated data transfer object 112 based on the returned instructions from the proxy server 350.
[0059] As described above, system 300 can perform its functions in various ways. For example, Figure 5 is a flowchart 500 providing a method for sending a query to a server regarding a received upload event and receiving a response including instructions for generating a simulated upload event, according to one example embodiment. In one embodiment, the steps of flowchart 500 can be performed by client computing device 102. For illustrative purposes, reference is made to Figure 3 to Figure 5 flowchart 500 is described as follows.
[0060] Flowchart 500 begins with step 502. In step 502, a query including metadata regarding a received upload event is sent to a proxy server. For example, simulation upload generator 108 sends query 358 to proxy 350 prior to generating simulated upload event 110 and simulated data transfer object 112. Query 358 can include an upload request for one or more files and / or one or more directories specified in query 358.
[0061] In step 504, a response to the query is received from the proxy server, including instructions. For example, simulation event instruction generator 362 can determine instructions for generating simulated upload event 110 and simulated data transfer object 112 based on file upload policies applied to the upload request of query 358. The upload policies can indicate criteria for taking certain actions, or indicate how to handle certain files or directories (e.g., modify file contents, encrypt file contents, rename files, reject transfer of certain types of files, etc.). The instructions can be sent in response 360 and received by client computing device 102.
[0062] In step 506, generation of a simulated upload event and corresponding simulated data transfer object is based on the instructions received from the proxy server. For example, simulation event generator 108 can generate simulated upload event 110 and simulated data transfer object 112 based on the instructions received from proxy server 350 in response 360.
[0063] For example, in one embodiment, an embedded simulated upload event listener 352 sends a query 358 to a proxy server 350, including a request for one or more specified files and / or directories. The proxy server 350 may return instructions to the embedded simulated event listener 352 to process the one or more files and / or directories before uploading them. A simulated event instruction generator 362 can determine instructions based on a file upload policy applied to the upload request. For example, the upload policy may indicate criteria for taking certain actions or instructions on how to process certain files or directories (e.g., modify file content, encrypt file content, rename files, refuse to transfer certain types of files, etc.). A simulated event generator 108 can generate a simulated upload event 110 and a corresponding simulated data transfer object 112 based on the instructions returned in the response 360 from the proxy server 350.
[0064] III. Computer System Implementation Examples
[0065] The embodiments described herein can be implemented in hardware, or in combination with hardware, software, and / or firmware. For example, the embodiments described herein can be implemented as computer program code / instructions configured to execute in one or more processors and stored in a computer-readable storage medium. Alternatively, the embodiments described herein can be implemented as hardware logic / electrical circuitry.
[0066] As described herein, the embodiments include, but are not limited to, Figure 1 System 100 Figure 3 System 300 and Figure 6 The system 600, and any components and / or subsystems thereof. 6, and any components and / or sub-components thereof, and any operation and portion of the flowcharts / flowcharts described herein and / or further embodiments described herein, may be implemented in hardware, or any combination of hardware and software and / or firmware. This includes implementations as computer program code configured to execute in one or more processors and stored in a computer-readable storage medium, or implementations as hardware logic / circuit, such as in a system-on-a-chip (SoC), field-programmable gate array (FPGA), application-specific integrated circuit (ASIC), trusted platform module (TPM), and / or the like. An SoC may include an integrated circuit chip including one or more processors (such as microcontrollers, microprocessors, digital signal processors (DSPs), etc.), memory, one or more communication interfaces, and / or further circuitry and / or embedded firmware to perform its functions.
[0067] The embodiments described herein can be implemented in one or more computing devices similar to the mobile systems and / or computing devices in the fixed or mobile computer embodiments, including one or more features of the mobile systems and / or computing devices described herein, as well as alternative features. The description of the computing devices provided herein is for illustrative purposes and not for limitation. The embodiments can be implemented in many more types of computer systems, as will be known to those skilled in the art.
[0068] Figure 6 This is a block diagram of a processor-based computer system 600 that can be used to implement various embodiments. The client computing device 102, service provider server 120, network 130, and proxy server 350 can each include any type of computing device, mobile or fixed, such as a desktop computer, server, video game console, etc. For example, any one of the client computing device 102, service provider server 120, network 130, and proxy server 350 can be any type of mobile computing device (e.g., Devices, personal digital assistants (PDAs), portable computers, laptops, such as Apple iPads TM Tablet computers, netbooks, etc.), mobile phones (e.g., smartphones, such as Microsoft phones). Mobile phone, Apple iPhone, implementation Android TM Smartphones and wearable computing devices, including those with operating systems such as mobile phones. Glasses TM Oculus VR, LLC's Oculus Smart glasses (head-mounted devices), such as desktop computers or PCs (personal computers), game consoles / systems (e.g., Microsoft...) Sony Nintendo or Fixed computing devices such as (etc.).
[0069] The client computing device 102, service provider server 120, network 130, and proxy server 350 may each be implemented in one or more computing devices that include features similar to and / or alternative features to computing device 600 in the fixed or mobile computer embodiments. The description of computing device 600 provided herein is for illustrative purposes and not for limitation. Embodiments may be implemented in many other types of computer systems, as will be known to those skilled in the art.
[0070] like Figure 6As shown, computing device 600 includes one or more processors, referred to as processor circuit 602, a system memory 604, and a bus 606 that couples various system components including system memory 604 to processor circuit 602. Processor circuit 602 is an electrical and / or optical circuit that is implemented in one or more physical hardware electrical circuit device elements and / or integrated circuit devices (semiconductor material chips or dies) as a central processing unit (CPU), a microcontroller, a microprocessor, and / or other physical hardware processor circuit. Processor circuit 602 can execute program code stored in a computer-readable medium, such as program code of operating system 630, application programs 632, other programs 634, etc. Bus 606 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus structures. System memory 604 includes read only memory (ROM) 608 and random access memory (RAM) 610. A basic input / output system 612 (BIOS) is stored in ROM 608.
[0071] Computing device 600 also has one or more of the following: a hard disk drive 614 for reading from and writing to a hard disk, a magnetic disk drive 616 for reading from or writing to a magnetic disk 618, and an optical disk drive 620 for reading from or writing to an optical disk 622, such as a CD ROM, DVD ROM or other optical media. Hard disk drive 614, magnetic disk drive 616, and optical disk drive 620 are connected to bus 606 by a hard disk drive interface 624, a magnetic disk drive interface 626, and an optical disk drive interface 628, respectively. These drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a magnetic disk and an optical disk are described, other types of hardware-based computer-readable storage media which are readable by a computer, such as a flash memory card, a digital video disk, a RAM, a ROM, and a solid state drive, can also be used in the same way.
[0072] Some of the program modules can be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include operating system 630, one or more application programs 632, other programs 634, and program data 636. Application programs 632 or other programs 634 can include, for example, computer program logic (e.g., computer program code or instructions) for implementing client computing device 102, service provider server 120, network 130, proxy server 350, browser 104, web page 106, simulated upload event generator 108, script code 364, simulated upload event 110, simulated data transfer object 112, dispatcher 114, upload event listener 116, event handler 118, embedded upload event listener 352, event modification code 354, input element 356, simulated event instruction generator 362, query 358, response 360, flowchart 200, flowchart 400, flowchart 500, and / or further embodiments described herein. Program data 636 can include simulated upload event 110, simulated data transfer object 112, query 358, response 360, and / or further embodiments described herein.
[0073] A user can enter commands and information into computing device 600 through input devices such as keyboard 638 and pointing device 640. Other input devices (not shown) can include a microphone, joystick, game pad, satellite dish, scanner, touch screen and / or touch pad, a voice recognition system to receive voice input, a gesture recognition system to receive gesture input, or the like. These and other input devices are often connected to processor circuit 602 through a serial port interface 642 that is coupled to bus 606, but can be connected by other interfaces, such as a parallel port, a game port, or a universal serial bus (USB).
[0074] A display screen 644 is also connected to bus 606 via an interface, such as a video adapter 646. Display screen 644 can be external to computing device 600 or incorporated into computing device 600. Display screen 644 can display information and also be a user interface for receiving user commands and / or other information (e.g., through touch, finger gestures, virtual keyboard, etc.). In addition to display screen 644, computing device 600 can include other peripheral output devices (not shown), such as speakers and a printer.
[0075] Computing device 600 is connected to a network 648 (e.g., the Internet) through an adapter or network interface 650, a modem 652, or other means for establishing communications over the network. Modem 652, which can be internal or external, can be connected to bus 606 via serial port interface 642, as shown, or can be connected to bus 606 using other interface types, including a parallel interface. Figure 6 As shown, modem 652 can be connected to bus 606 via serial port interface 642, universal serial bus (USB) port 654, or other interface types.
[0076] As used herein, the terms "computer program medium," "computer-readable medium," and "computer-readable storage medium" are used to generally refer to physical hardware media such as hard disks associated with hard disk drive 614, removable magnetic disks 618, removable optical disks 622, other physical hardware media such as RAM, ROM, flash memory cards, digital video disks, compressed disks, MEMs, nanotechnology-based storage devices, and further types of physical / tangible hardware storage media. Such computer-readable storage media distinguish from, and do not encompass, transitory communications media that merely represent a change in state of a material, but do not survive as a physical hardware storage medium. Computer-readable storage media are non-transitory. Computer-readable storage media do not comprise communications media.
[0077] As described above, computer programs and modules (including application programs 632 and other programs 634) can be stored on hard disk, magnetic disk, optical disk, ROM, RAM, or other hardware storage medium. Such computer programs can also be received via network interface 650, serial port interface 642, or any other interface type. Such computer programs, when executed or loaded by an application, enable computing device 600 to implement features of embodiments discussed herein. Accordingly, such computer programs represent controllers of the computing device 600.
[0078] Embodiments of the application are also directed to computer program products including computer code or instructions stored on any computer-readable medium. Such computer program products include hard disk drives, optical drives, memory device packages, portable memory sticks, memory cards, and other types of physical storage hardware.
[0079] IV. Other Embodiments and Advantages
[0080] In one embodiment, a system in a client computing device includes a browser configured to present a web page, a simulated upload event generator including program code configured to generate a simulated upload event and a corresponding simulated data transfer object for use in uploading data using the web page. The program code is configured to execute in the client computing device. A dispatcher is configured to propagate the simulated upload event and the corresponding simulated data transfer object to an upload event listener of the web page. An event handler is configured to execute the simulated upload event.
[0081] In one embodiment, the data comprises a file, a plurality of files, a directory, or a plurality of directories.
[0082] In one embodiment, the simulated upload event performs at least one of the following: modifying a file, changing a file name, changing content of a file, creating a file, changing a list of files in a directory, or creating a file system.
[0083] In one embodiment, the system further comprises: an embedded upload event listener configured to intercept a received upload event before the simulated upload event generator generates a simulated upload event and a corresponding simulated data transfer object for use in uploading data using the web page; read the received upload event; discard the received upload event from the upload event handler pipeline; and synchronously or asynchronously invoke code to perform logic on the received upload event.
[0084] In one embodiment, the program code configured to generate a simulated upload event and a corresponding simulated data transfer object for use in uploading data using the web page is configured to modify the received upload event.
[0085] In one embodiment, the embedded upload event listener is configured to respond to a drag-and-drop input or a select input in a conversation element input of the web page.
[0086] In one embodiment, the embedded upload event listener is registered to execute before any other event listeners of the web page.
[0087] In one embodiment, the simulated upload event generator is configured to: send a query including metadata about the received upload event to a proxy server; and receive a response to the query including instructions from the proxy server. The simulated upload event generator including program code is further configured to generate the simulated upload event and the corresponding simulated data transfer object based on the instructions received from the proxy server.
[0088] In one embodiment, the simulated upload event generator comprises at least one of the following: a script browser extension code; a script code that alters the received event; a new script code; a script code injected as a hook library in the web page.
[0089] In one embodiment, the simulated upload event generator is a script code in a scripting language.
[0090] In one embodiment, a method in a client computing device, comprising: presenting a web page in a browser of the client computing device; generating, by program code configured to execute in the client computing device, a simulated upload event and a corresponding simulated data transfer object for use in uploading data using the web page; propagating the simulated upload event and the corresponding simulated data transfer object to an upload event listener of the web page; and executing the simulated upload event.
[0091] In one embodiment, the simulated upload event performs at least one of the following: modifying a file, changing a file name, changing content of a file, creating a file, changing a list of files in a directory, or creating a file system.
[0092] In one embodiment, prior to generating the simulated upload event and corresponding simulated data transfer object for uploading data using the web page by program code configured to execute in the client computing device, the method further comprises: intercepting a received upload event by an embedded upload event listener; reading the received upload event; discarding the received upload event from an upload event handler pipeline; and invoking code, synchronously or asynchronously, by the embedded event listener to perform logic on the received upload event for said generating.
[0093] In one embodiment, the embedded upload event listener is registered to execute before any other event listeners of the web page.
[0094] In one embodiment, the method further comprises: sending a query to the proxy server including metadata about the received upload event; and receiving a response to the query from the proxy server including instructions. Generating the simulated upload event and corresponding simulated data transfer object for uploading data using the web page by program code configured to execute in the client computing device is based on the instructions received from the proxy server.
[0095] In one embodiment, the simulated upload event generator comprises at least one of the following: script browser extension code; script code that alters a received event; new script code; script code injected into the web page as a hook library.
[0096] In one embodiment, the simulated upload event generator is script code in a scripting language.
[0097] In one embodiment, a computer readable medium has program code recorded thereon, which when executed by at least one processor, causes the at least one processor to perform a method comprising. Presenting a web page in a browser of a client computing device; generating, by program code configured to execute in the client computing device, a simulated upload event and corresponding simulated data transfer object for uploading data using the web page; propagating the simulated upload event and corresponding simulated data transfer object to an upload event listener of the web page; and executing the simulated upload event.
[0098] In one embodiment, prior to generating a simulated upload event and a corresponding simulated data transfer object for use in uploading data using a web page by program code configured to execute in the client computing device, the method further comprises: intercepting the received upload event by an embedded upload event listener; reading the received upload event; discarding the received upload event from the upload event handler pipeline; and invoking code, either synchronously or asynchronously, by the embedded event listener to perform logic on the received upload event for said generating.
[0099] In one embodiment, the method further comprises: sending a query to the proxy server including metadata about the received upload event; and receiving a response to the query from the proxy server including instructions. Generating a simulated upload event and a corresponding simulated data transfer object for use in uploading data using a web page by program code configured to execute in the client computing device is based on the instructions received from the proxy server.
[0100] V. Conclusion
[0101] While various embodiments of the application have been described above, it should be understood that they have been presented by way of example only, and not limitation. Those skilled in the art will understand that various changes in form and detail can be made therein without departing from the spirit and scope of the application as defined in the appended claims. Therefore, the breadth and scope of the application should not be limited by any of the above-described exemplary embodiments, but should be defined in accordance with the following claims and their equivalents.
Claims
1. A system in a client computing device, comprising: The embedded upload event listener is configured as follows: Intercept received upload events; Read the received upload event; as well as Discard the received upload event from the upload event handler pipeline; A simulated upload event generator, including program code, is configured to generate simulated upload events and corresponding simulated data transfer objects for uploading data using a webpage, wherein the simulated upload events are replacements for the discarded upload events, and wherein the program code is configured to be executed on the client computing device; The dispatcher is configured to propagate the simulated upload event and the corresponding simulated data transfer object to the upload event listener of the webpage; as well as An event handler is configured to execute the simulated upload event.
2. The system according to claim 1, wherein the data includes files, multiple files, directories, or multiple directories.
3. The system according to claim 1, wherein the simulated upload event performs at least one of the following: Modify the file. Change the file name. Change the content of the file. Create a file. Change the list of files in the directory, or Create a file system.
4. The system according to claim 1, wherein the embedded upload event listener is further configured to: The program code is invoked synchronously or asynchronously to execute logic in response to the received upload event.
5. The system of claim 4, wherein the program code configured to generate a simulated upload event and a corresponding simulated data transfer object for uploading data using the webpage is configured to modify the received upload event.
6. The system of claim 4, wherein the embedded upload event listener is configured to respond to drag-and-drop input or selection input in the dialog element input of the webpage.
7. The system of claim 4, wherein the embedded upload event listener is registered to be executed before any other event listener on the webpage.
8. The system according to claim 4, wherein the simulated upload event generator is configured to: Send a query to the proxy server, the query including metadata about the received upload event; and Receive a response to the query from the proxy server, the response including instructions; The simulated upload event generator, which includes program code, is also configured to generate the simulated upload event and the corresponding simulated data transfer object based on the instructions received from the proxy server.
9. The system of claim 1, wherein the simulated upload event generator comprises at least one of the following: Script browser extension code; Modify the script code that receives the event; New script code; or Script code injected into a webpage as a hook library.
10. The system according to claim 1, wherein the simulated upload event generator is script code in a scripting language.
11. A method in a client computing device, comprising: Intercept received upload events; Read the received upload event; Discard the received upload event from the upload event handler pipeline; A simulated upload event and a corresponding simulated data transfer object are generated for uploading data using a webpage, wherein the simulated upload event is a replacement for the discarded upload event; The simulated upload event and the corresponding simulated data transmission object are propagated to the upload event listener of the webpage; as well as Instruct the upload event listener to execute the simulated upload event.
12. The method of claim 11, wherein the simulated upload event performs at least one of the following: Modify the file. Change the file name. Change the content of the file. Create a file. Change the list of files in the directory, or Create a file system.
13. The method of claim 11, wherein before generating the simulated upload event and the corresponding simulated data transfer object for uploading data using the webpage, the method further comprises: The code is invoked synchronously or asynchronously by the embedded upload event listener to execute logic on the received upload event for the purpose of the generation.
14. The method of claim 13, wherein the embedded upload event listener is registered to be executed before any other event listener on the webpage.
15. The method of claim 13, further comprising: Send a query to the proxy server, the query including metadata about the received upload event; as well as Receive a response to the query, including instructions, from the proxy server; The generation of the simulated upload event and the corresponding simulated data transfer object for uploading data using the webpage is based on the instructions received from the proxy server.
16. The method of claim 11, wherein the simulated upload event generator comprises at least one of the following: Script browser extension code; Modify the script code that receives the event; New script code; or Script code injected into a webpage as a hook library.
17. The method of claim 11, wherein the simulated upload event generator is script code in a scripting language.
18. A physical hardware computer-readable medium having program code recorded thereon, the program code, when executed by at least one processor, causing the at least one processor to perform a method, the method comprising: Intercept received upload events; Read the received upload event; Discard the received upload event from the upload event handler pipeline; A simulated upload event and a corresponding simulated data transfer object are generated for uploading data using a webpage, wherein the simulated upload event is a replacement for the discarded upload event; The simulated upload event and the corresponding simulated data transmission object are propagated to the upload event listener of the webpage; as well as Instruct the upload event listener to execute the simulated upload event.
19. The physical hardware computer-readable medium of claim 18, wherein before generating the simulated upload event and the corresponding simulated data transfer object for uploading data using a webpage, the method further comprises: The code is invoked synchronously or asynchronously by the embedded upload event listener to execute logic on the received upload event for the purpose of the generation.
20. The physical hardware computer-readable medium of claim 19, further comprising: Send a query to the proxy server, the query including metadata about the received upload event; as well as Receive a response to the query, including instructions, from the proxy server; The generation of simulated upload events and corresponding simulated data transfer objects by the program code configured to execute on the client computing device for uploading data using the webpage is based on the instructions received from the proxy server.
Citation Information
Patent Citations
Window interface transmission method in virtual desktop system
CN102521027A
Computerized tool, system and method for remote access to a computer program
US20120290913A1