Handle reuploads via filehandle better if original is missing
This commit is contained in:
parent
bf34f730dd
commit
57d57b8d8f
@ -286,8 +286,31 @@ class MediaFile
|
|||||||
try {
|
try {
|
||||||
$file = File::getByHash($filehash);
|
$file = File::getByHash($filehash);
|
||||||
// Already have it, so let's reuse the locally stored File
|
// Already have it, so let's reuse the locally stored File
|
||||||
$filename = $file->filename;
|
// by using getPath we also check whether the file exists
|
||||||
|
// and throw a FileNotFoundException with the path if it doesn't.
|
||||||
|
$filename = basename($file->getPath());
|
||||||
$mimetype = $file->mimetype;
|
$mimetype = $file->mimetype;
|
||||||
|
} catch (FileNotFoundException $e) {
|
||||||
|
// This happens if the file we have uploaded has disappeared
|
||||||
|
// from the local filesystem for some reason. Since we got the
|
||||||
|
// File object from a sha256 check in fromFilehandle, it's safe
|
||||||
|
// to just copy the uploaded data to disk!
|
||||||
|
|
||||||
|
fseek($fh, 0); // just to be sure, go to the beginning
|
||||||
|
// dump the contents of our filehandle to the path from our exception
|
||||||
|
// and report error if it failed.
|
||||||
|
if (false === file_put_contents($e->path, fread($fh, filesize($stream['uri'])))) {
|
||||||
|
// TRANS: Client exception thrown when a file upload operation fails because the file could
|
||||||
|
// TRANS: not be moved from the temporary folder to the permanent file location.
|
||||||
|
throw new ClientException(_('File could not be moved to destination directory.'));
|
||||||
|
}
|
||||||
|
if (!chmod($e->path, 0664)) {
|
||||||
|
common_log(LOG_ERR, 'Could not chmod uploaded file: '._ve($e->path));
|
||||||
|
}
|
||||||
|
|
||||||
|
$filename = basename($file->getPath());
|
||||||
|
$mimetype = $file->mimetype;
|
||||||
|
|
||||||
} catch (NoResultException $e) {
|
} catch (NoResultException $e) {
|
||||||
File::respectsQuota($scoped, filesize($stream['uri']));
|
File::respectsQuota($scoped, filesize($stream['uri']));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user