IP Library Granted Patent US 9,747,321
Granted Patent B2
US 9,747,321 · App. 15/341,482 · Granted Aug 29, 2017

Providing a content preview

Inventors: Ziga Mahkovec (San Francisco, CA); Nikrad Mahdi (San Francisco, CA); Christopher Beckmann (San Francisco, CA)
Assignee: DROPBOX, INC.
G06F17/3033G06F17/30073G06F17/30088G06F17/30091G06F17/30126G06F17/30864
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,747,321
App. No.
15/341,482
Granted
Aug 29, 2017
Kind
B2
Abstract

A content preview of a content item stored in an online storage system can be viewed on a client device without the content item itself being downloaded to the client device and without the use of software associated with the content item being installed on the client device. Furthermore, data storage and processing requirements can be minimized by creating and storing only one content preview for each unique content item. The content item can be identified by using the content item as a hash key in a hashing algorithm. The resulting unique identifier can be used to search a preview index that lists all created content previews and their location. A content preview is only created if one does not exist. The unique identifier can be used to locate the content preview and return it in response to a preview request by a client device.

Claims (75)

1. A computer-implemented method comprising:

splitting, via one or more processors, a content item into at least a first fixed size block containing a first portion of the content item and a second fixed size block containing a second portion of the content item, the second portion being different from the first portion;

computing, via the one or more processors, a first hash identifier by hashing at least a part of the first portion of the first fixed size block with a first hash key;

computing, via the one or more processors, a second hash identifier by hashing at least a part of the second portion of the second fixed size block with a second hash key;

generating, via the one or more processors, a third hash key by combining the first hash identifier and the second hash identifier;

determining, based on the third hash key, that a content preview of the content item is not available; and

creating, via the one or more processors, in response to the determination that the content preview of the content item is not available, the content preview of the content item.

2. The computer-implemented method of claim 1 , wherein the splitting of the content item is in response to a triggering event comprising at least one of a content item preview request or a request to store the content item in a user account on a content management system.

3. The computer-implemented method of claim 1 , further comprising:

generating, in a preview index, a new preview entry associated with the content preview, the preview index comprising a listing of known content previews, wherein the new preview entry uniquely identifies the content preview of the content item and identifies a storage location or path associated with the content preview.

4. The computer-implemented method of claim 3 , wherein the determining that the content preview of the content item is not available comprises:

searching the preview index for an existing preview entry associated with the content preview, the searching being performed based on the third hash key; and

determining that the preview index does not include the existing preview entry associated with the content preview.

5. The computer-implemented method of claim 1 , further comprising:

receiving, from a client device, a preview request associated with the content item;

identifying a storage location of the content preview; and

providing, to the client device, the content preview.

6. The computer-implemented method of claim 5 , wherein the preview request comprises the third hash key, and wherein the storage location of the content preview is identified by searching a preview index containing content preview entries, the content preview entries comprising a respective content preview entry associated with the content preview associated with the content item, the respective content preview entry comprising the third hash key and a reference to the storage location of the content preview.

7. The computer-implemented method of claim 1 , wherein the hashing algorithm is referentially transparent.

8. The computer-implemented method of claim 1 , wherein the first fixed size block and the second fixed size block are associated with different content sizes.

9. The computer-implemented method of claim 8 , further comprising:

splitting the content item into one or more third fixed size blocks containing one or more third portions of the content item; and

generating one or more fourth hash identifiers by using at least part of the one or more third portions of the one or more third fixed size blocks as one or more fourth hash keys in the hashing algorithm;

wherein the generating the third hash key comprises combining the first hash identifier, the second hash identifier, and the one or more fourth hash identifiers.

10. The computer-implemented method of claim 1 , further comprising:

splitting a second content item into at least a third fixed size block and a fourth fixed size block;

computing a fourth hash identifier by hashing at least a part of the third fixed size block;

computing a fifth hash identifier by hashing at least a part of the fourth fixed size block;

generating a fourth hash key by combining the fourth hash identifier and the fifth hash identifier;

based on the fourth hash key, searching a content preview index to determine if a respective content preview of the second content item is available;

based on the searching of the content preview index, determining that the respective content preview of the second content item is available;

identifying a location of the respective content preview based on a respective content preview entry in the content preview index, the respective content preview entry being associated with the respective content preview; and

providing the location to a client device.

11. A system comprising:

one or more hardware processors; and

at least one computer-readable storage medium having stored therein instructions which, when executed by the one or more hardware processors, cause the system to:

split a content item into at least a first fixed size block and a second fixed size block;

compute a first hash identifier by hashing at least a part of the first fixed size block with a first hash key;

compute a second hash identifier by hashing at least a part of the second fixed size block as a second hash key;

generate a third hash key by combining the first hash identifier and the second hash identifier;

determine, based on the third hash key, that a content preview of the content item is not available; and

creating, in response to the determination that the content preview of the content item is not available, the content preview of the content item.

12. The system of claim 11 , wherein the splitting of the content item is in response to a triggering event comprising at least one of a content item preview request or a request to store the content item in a user account on a content management system.

13. The system of claim 11 , the at least one computer-readable storage medium having stored therein additional instructions which, when executed by the one or more processors, cause the system to:

generate, in a preview index, a new preview entry associated with the content preview, the preview index comprising a listing of known content previews, wherein the new preview entry uniquely identifies the content preview of the content item and identifies a storage location or path associated with the content preview.

14. The system of claim 13 , wherein the determining that the content preview of the content item is not available comprises:

searching the preview index for an existing preview entry associated with the content preview, the searching being performed based on the third hash key; and

determining that the preview index does not include the existing preview entry associated with the content preview.

15. The system of claim 11 , the at least one computer-readable storage medium having stored therein additional instructions which, when executed by the one or more processors, cause the system to:

receive, from a client device, a preview request associated with the content item;

identify a storage location of the content preview; and

provide, to the client device, the content preview.

16. The system of claim 11 , wherein the preview request comprises the third hash key, and wherein the storage location of the content preview is identified by searching a preview index containing content preview entries, the content preview entries comprising a respective content preview entry associated with the content preview associated with the content item, the respective content preview entry comprising the third hash key and a reference to the storage location of the content preview.

17. The system of claim 11 , the at least one computer-readable storage medium having stored therein additional instructions which, when executed by the one or more processors, cause the system to:

split a second content item into at least a third fixed size block and a fourth fixed size block;

compute a fourth hash identifier by hashing at least a part of the third fixed size block;

compute a fifth hash identifier by hashing at least a part of the fourth fixed size block;

generating a fourth hash key by combining the fourth hash identifier and the fifth hash identifier;

based on the fourth hash key, search a content preview index to determine if a respective content preview of the second content item is available;

based on the searching of the content preview index, determine that the respective content preview of the second content item is available;

identify a location or path of the respective content preview based on a respective content preview entry in the content preview index, the respective content preview entry being associated with the respective content preview; and

provide the location or path to a client device.

18. A non-transitory computer-readable storage medium comprising:

instructions stored on the non-transitory computer-readable storage medium which, when executed by one or more processors, cause the one or more processors to:

split a content item into at least a first fixed size block and a second fixed size block;

compute a first hash identifier by hashing a first hash key comprising at least a part of the first fixed size block;

compute a second hash identifier by hashing a second hash key comprising at least a part of the second fixed size block;

generate a third hash key by combining the first hash identifier and the second hash identifier;

determine, based on the third hash key, that a content preview of the content item is not available; and

creating, in response to the determination that the content preview of the content item is not available, the content preview of the content item.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the splitting of the content item is in response to a triggering event comprising at least one of a content item preview request or a request to store the content item in a user account on a content management system.

20. The non-transitory computer-readable storage medium of claim 18 , storing additional instructions which, when executed by the one or more processors, cause the one or more processors to:

split the content item into one or more third fixed size blocks; and

generate one or more fourth hash identifiers by hashing at least a part of the one or more third fixed size blocks;

wherein generating the third hash key comprises combining the first hash identifier, the second hash identifier, and the one or more fourth hash identifiers.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2016
From: MAHKOVEC, ZIGA; MAHDI, NIKRAD; BECKMANN, CHRISTOPHER
To: DROPBOX, INC.
Reel/Frame 040198/0776 →
Continuity (4)
Continuation 14797997 · Jul 13, 2015
Continuation 13826436 · Mar 14, 2013
Provisional Application 61758580 · Jan 30, 2013
Related Publication 20170075889A1 · Mar 16, 2017