Opened 13 years ago
Closed 13 years ago
#21116 closed defect (bug) (duplicate)
can't upload file with spaces in its name with function media_sideload_image
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | |
Component: | Media | Keywords: | |
Focuses: | Cc: |
Description
When file has space(s) in its name it's impossible to upload it with media_sideload_image. I resolved it by adding few lines to the function.
I'm not expert in php so maybe you find a better way to fix it.
Below there is the part of the code which I changed.
I added comments with "blatan:" to make it easy to find.
function media_sideload_image($file, $post_id, $desc = null) { if ( ! empty($file) ) { // Download file to temp location // blatan: these lines are needed to load images with spaces in their names $parsed_file = parse_url($file); $path = $parsed_file['path']; $file_name = basename($path); $encoded_file_name = rawurlencode($file_name); $path = str_replace($file_name, $encoded_file_name, $path); $file = $parsed_file['scheme'] . "://" . $parsed_file['host'] . $path; echo "URL:$file"; $tmp = download_url( $file ); // Set variables for storage // fix file filename for query strings preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches); // blatan: file name has to be decoded and sanitized to avoid problem with spaces in name // there are dashes instead spaces, so now in name there are two or more dashes next to each other //$file_array['name'] = basename($matches[0]); $file_array['name'] = sanitize_file_name(rawurldecode(basename($matches[0]))); $file_array['tmp_name'] = $tmp;
I hope this helps and hope it's enough problem to add the ticket.
Regards,
Bernard
Change History (1)
Note: See
TracTickets for help on using
tickets.
#16330