现在我通过拖动字段上的图像执行图像上传操作,并成功将其上传到目的地。现在我需要在将图像拖到字段上的同时在多个文件夹上上传相同的图像,图像应插入多个文件夹中。当我尝试在多个文件夹上传相同的图像时出现问题,图像插入到第一个文件夹而不是其他文件夹。我附上了以下代码。
function uploadimage() {
$headerimage=array();
if (!empty($_FILES)) {
$headerimage[0] = 'uploadimages/post_ads'."/".$_FILES['file']['name'];
echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[0]);
$headerimage[1] = 'uploadimages/latestimages'."/".$_FILES['file']['name'];
echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[1]);
$headerimage[2] = 'uploadimages/listimages'."/".$_FILES['file']['name'];
echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[2]);
$headerimage[3] = 'uploadimages/photoimages'."/".$_FILES['file']['name'];
//$headerpath = 'uploadimages/photoimages'."/".$_FILES['file']['name'];
echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[3]);
$headerimage[4] = 'uploadimages/slideimages'."/".$_FILES['file']['name'];
//$headerpath = 'uploadimages/slideimages'."/".$_FILES['file']['name'];
echo move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[4]);
print_r($headerimage);
$_SESSION['upload_images'][]=$headerimage;
}
}
在post_ads
文件夹中插入图像,但在其他文件夹中则不插入。你们中的任何人都可以向我建议一个可能的解决方案吗?
答案 0 :(得分:1)
move_uploaded_file将移动文件,而不是复制它 - 这意味着它只能工作一次。
如果您正在使用副本,则根据您可以复制的次数不应有任何限制:上传创建的临时文件只会在脚本执行结束时销毁(除非您当然,之前移动/删除它
不过,也许一个解决方案是首先使用move_uploaded_file,然后复制? 有点像这样,我想:
if (move_uploaded_file($_FILES['file']['tmp_name'],$headerimage[1])) {
copy($headerimage[1], $headerimage[2]);
copy($headerimage[1], $headerimage[3]);
copy($headerimage[1], $headerimage[4]);
}
答案 1 :(得分:0)
有一些很好的php库可以处理上传。我使用http://www.verot.net/php_class_upload.htm它简化了你的工作。您可以将文件上传到多个文件夹,然后像:
include('class.upload.php');
//--------------------------------------
$upload_handler = new Upload($_FILES['file']);
if ($upload_handler->uploaded)
{
$new name = time().rand(10000,99999);
//----------------------------------------
$upload_handler->image_convert = 'jpg';
$upload_handler->jpeg_quality = 70;
$upload_handler->image_background_color = '#FFFFFF';
$upload_handler->image_resize = true;
$upload_handler->file_new_name_body = $new name;
$upload_handler->image_ratio_fill = true;
$upload_handler->image_ratio_no_zoom_in = true;
$upload_handler->image_x = 900;
$upload_handler->image_y = 700;
$upload_handler->Process('folder_path_1');
//-----------------------------------------
$upload_handler->image_convert = 'jpg';
$upload_handler->jpeg_quality = 70;
$upload_handler->image_background_color = '#FFFFFF';
$upload_handler->image_resize = true;
$upload_handler->file_new_name_body = $new name;
$upload_handler->image_ratio_fill = true;
$upload_handler->image_ratio_no_zoom_in = true;
$upload_handler->image_x = 150;
$upload_handler->image_y = 150;
$upload_handler->Process('folder_path_2');
//-----------------------------------------
}
所以你可以调整大小,重新采样等等,然后为不同的文件夹调用Process多少次。
答案 2 :(得分:0)
感谢您的建议。我找到了确切而简单的方法。我附上了以下代码
function uploadimage()
{
if (!empty($_FILES)) {
$headerimage= 'uploadimages/featuredimages'."/".$_FILES['file']['name'];
$headerimage1= 'uploadimages/latestimages'."/".$_FILES['file']['name'];
$headerimage2 = 'uploadimages/listimages'."/".$_FILES['file']['name'];
$headerimage3 = 'uploadimages/photoimages'."/".$_FILES['file']['name'];
$headerimage4 = 'uploadimages/slideimages'."/".$_FILES['file']['name'];
$headerimage5 = 'uploadimages/galleryimages'."/".$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'],$headerimage);
copy($headerimage, $headerimage1 );
copy($headerimage1, $headerimage2 );
copy($headerimage1, $headerimage3 );
copy($headerimage1,$headerimage4 );
copy($headerimage1,$headerimage5 );
$_SESSION['upload_images'][]=$headerimage1;
}
}