mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 22:10:55 +01:00
When creating a file by downloading a URI, truncate the length of the default name
Summary: See <https://discourse.phabricator-community.org/t/embedding-external-images-url-show-error-for-long-urls/1339>. When we download a file from a URI, we provide a default name based on the URI. However, if the URI is something like `http://example.com/very-very-very-....-long.jpg` with more than 255 characters, we may suggest a name which won't fit into the `name` column of `PhabricatorFile`. Instead, suggest a default name no longer than 64 bytes. Test Plan: - Used the `{image ...}` example from the Discourse report locally; got an image with a truncated name. - Used a normal `{image ...}`, got an image file with a normal name. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D19353
This commit is contained in:
parent
37a03402bc
commit
70056a9072
1 changed files with 10 additions and 3 deletions
|
@ -648,10 +648,17 @@ final class PhabricatorFile extends PhabricatorFileDAO
|
|||
// just bail out.
|
||||
throw $status;
|
||||
} else {
|
||||
// This is HTTP 2XX, so use the response body to save the
|
||||
// file data.
|
||||
// This is HTTP 2XX, so use the response body to save the file data.
|
||||
// Provide a default name based on the URI, truncating it if the URI
|
||||
// is exceptionally long.
|
||||
|
||||
$default_name = basename($uri);
|
||||
$default_name = id(new PhutilUTF8StringTruncator())
|
||||
->setMaximumBytes(64)
|
||||
->truncateString($default_name);
|
||||
|
||||
$params = $params + array(
|
||||
'name' => basename($uri),
|
||||
'name' => $default_name,
|
||||
);
|
||||
|
||||
return self::newFromFileData($body, $params);
|
||||
|
|
Loading…
Reference in a new issue