| Viewing file:  PostFile.php (2.92 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?php
 namespace Guzzle\Http\Message;
 
 use Guzzle\Common\Version;
 use Guzzle\Common\Exception\InvalidArgumentException;
 use Guzzle\Http\Mimetypes;
 
 /**
 * POST file upload
 */
 class PostFile implements PostFileInterface
 {
 protected $fieldName;
 protected $contentType;
 protected $filename;
 protected $postname;
 
 /**
 * @param string $fieldName   Name of the field
 * @param string $filename    Local path to the file
 * @param string $postname    Remote post file name
 * @param string $contentType Content-Type of the upload
 */
 public function __construct($fieldName, $filename, $contentType = null, $postname = null)
 {
 $this->fieldName = $fieldName;
 $this->setFilename($filename);
 $this->postname = $postname ? $postname : basename($filename);
 $this->contentType = $contentType ?: $this->guessContentType();
 }
 
 public function setFieldName($name)
 {
 $this->fieldName = $name;
 
 return $this;
 }
 
 public function getFieldName()
 {
 return $this->fieldName;
 }
 
 public function setFilename($filename)
 {
 // Remove leading @ symbol
 if (strpos($filename, '@') === 0) {
 $filename = substr($filename, 1);
 }
 
 if (!is_readable($filename)) {
 throw new InvalidArgumentException("Unable to open {$filename} for reading");
 }
 
 $this->filename = $filename;
 
 return $this;
 }
 
 public function setPostname($postname)
 {
 $this->postname = $postname;
 
 return $this;
 }
 
 public function getFilename()
 {
 return $this->filename;
 }
 
 public function getPostname()
 {
 return $this->postname;
 }
 
 public function setContentType($type)
 {
 $this->contentType = $type;
 
 return $this;
 }
 
 public function getContentType()
 {
 return $this->contentType;
 }
 
 public function getCurlValue()
 {
 // PHP 5.5 introduced a CurlFile object that deprecates the old @filename syntax
 // See: https://wiki.php.net/rfc/curl-file-upload
 if (function_exists('curl_file_create')) {
 return curl_file_create($this->filename, $this->contentType, $this->postname);
 }
 
 // Use the old style if using an older version of PHP
 $value = "@{$this->filename};filename=" . $this->postname;
 if ($this->contentType) {
 $value .= ';type=' . $this->contentType;
 }
 
 return $value;
 }
 
 /**
 * @deprecated
 * @codeCoverageIgnore
 */
 public function getCurlString()
 {
 Version::warn(__METHOD__ . ' is deprecated. Use getCurlValue()');
 return $this->getCurlValue();
 }
 
 /**
 * Determine the Content-Type of the file
 */
 protected function guessContentType()
 {
 return Mimetypes::getInstance()->fromFilename($this->filename) ?: 'application/octet-stream';
 }
 }
 
 |