php mysql上传多张图片,用PHP上传多张图片-超过5张

I have an image upload function that supports multiple files upload, but somehow it only uploads five images at once at most.

I really need it working with like maybe a hundred pictures to upload at once.

Here's the PHP file that handles upload:

session_start();

$path = $_SERVER['DOCUMENT_ROOT'];

// Include the Image class file and database for the database connection

include_once $path . "/includes/db.php";

include_once $path . "/classes/Image.php";

$folderName = $_SESSION['id'];

// Loop through the image array

for ($i = 0; $i < count($_FILES['upload']); $i++) {

// Creating image location information

$fileLink = "upload/$folderName/" . $_FILES['upload']['name'][$i];

$fileType = $_FILES['upload']['type'][$i];

$fileSize = ($_FILES['upload']['type'][$i]) / 1024;

// See if a photo uploads to just upload not to a specific user

$source = "$path/$fileLink";

$insertImageQuery = "INSERT INTO Image (id, image_link, image_type, image_size) VALUES($folderName, '$fileLink', '$fileType', '$fileSize')";

if ((move_uploaded_file($_FILES["upload"]["tmp_name"][$i], $source)) && mysql_query($insertImageQuery)) {

// Create a new image object after a file moves to a location

$curImage = new Image();

$curImage -> scaleFunction($source);

$curImage -> save($source);

}

}

And here's the Image class:

$path = $_SERVER['DOCUMENT_ROOT'];

require_once ($path . "/includes/constants.php");

class Image {

private $image;

//Private Variable stores image type information

private $image_type;

// It creates a PHP picture "resource" from imagecreate

// calls, and this allows for special function calls

// like imagesy and imagesx.

function load($filename) {

$image_info = getimagesize($filename);

$this -> image_type = $image_info[2];

if ($this -> image_type == IMAGETYPE_JPEG) {

//Create JPEG file from source

$this -> image = imagecreatefromjpeg($filename);

} elseif ($this -> image_type == IMAGETYPE_GIF) {

//Create GIF file from source

$this -> image = imagecreatefromgif($filename);

} elseif ($this -> image_type == IMAGETYPE_PNG) {

//Create PNG file from source

$this -> image = imagecreatefrompng($filename);

}

}

function getWidth() {

// Use a built-in PHP function to get width in pixels

return imagesx($this -> image);

}

function getHeight() {

// Use a built-in PHP function to get height in pixels

return imagesy($this -> image);

}

function resizeToHeight($height) {

$ratio = $height / $this -> getHeight();

$width = $this -> getWidth() * $ratio;

$this -> resize($width, $height);

}

function resizeToWidth($width) {

$ratio = $width / $this -> getWidth();

$height = $this -> getHeight() * $ratio;

$this -> resize($width, $height);

}

// Scale to a particular percentage, for future use

function scale($scale) {

$width = $this -> getWidth() * $scale / 100;

$height = $this -> getheight() * $scale / 100;

$this -> resize($width, $height);

}

function resize($width, $height) {

$new_image = imagecreatetruecolor($width, $height);

imagecopyresampled($new_image, $this -> image, 0, 0, 0, 0,

$width, $height, $this -> getWidth(),

$this -> getHeight());

$this -> image = $new_image;

}

// Save a picture with a given quality (compression), with

// 100 being the highest quality.

// It is only used for JPEG files because the

function save($filename, $image_type = IMAGETYPE_JPEG, $compression = 100) {

if ($image_type == IMAGETYPE_JPEG) {

imagejpeg($this -> image, $filename, $compression);

} elseif ($image_type == IMAGETYPE_GIF) {

imagegif($this -> image, $filename);

} elseif ($image_type == IMAGETYPE_PNG) {

imagepng($this -> image, $filename);

}

}

function output($image_type = IMAGETYPE_JPEG) {

if ($image_type == IMAGETYPE_JPEG) {

imagejpeg($this -> image);

} elseif ($image_type == IMAGETYPE_GIF) {

imagegif($this -> image);

} elseif ($image_type == IMAGETYPE_PNG) {

imagepng($this -> image);

}

}

function scaleFunction($filename) {

$this -> load($filename);

if ($this -> getHeight() > IMAGE_THRESHOLD) {

$this -> resizeToHeight(IMAGE_THRESHOLD);

}

if ($this -> getWidth() > IMAGE_THRESHOLD) {

$this -> resizeToWidth(IMAGE_THRESHOLD);

}

}

} // End of the image class

?>

Okay, so this is what I have for php.ini

max_execution_time = 120

max_input_time = 120

; Whether to allow HTTP file uploads.

file_uploads = On

; Maximum amount of memory a script may consume (50MB)

memory_limit = 50M

; Maximum size of POST data that PHP will accept.

post_max_size = 30M

; Maximum allowed size for uploaded files.

upload_max_filesize = 2M

But it still doesn't seem to work with more than five images. The article I found said to restart the server. But my website is hosted on GoDaddy. Any idea?

Also, here's my form that handle file submission

Upload

解决方案

If you have access to php.ini, try setting the max_file_uploads setting. GoDaddy may have lowered it and you can adjust it in php.ini

Never mind, I think I got it.

count($_FILES['upload'])

is wrong. Do

count($_FILES['upload']['name'])

$_FILES['upload'] always has five elements: name, tmp_name, size, type, and error.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值