小编Bob*_*Bob的帖子

如何使用PHP在我的安全站点上显示受保护的Amazon S3映像?

我正在尝试将我的网站的图像从我的主机移动到Amazon S3云托管.这些图像属于客户工作站点,无法公开.我希望它们能够在我的网站上显示,最好是使用亚马逊提供的PHP SDK.

到目前为止,我已经能够为转换编写脚本,以便在数据库中查找记录,获取文件路径,对其进行适当命名,然后将其发送到Amazon.

    //upload to s3
$s3->create_object($bucket, $folder.$file_name_new, array(
    'fileUpload' => $file_temp,
    'acl' => AmazonS3::ACL_PRIVATE, //access denied, grantee only own
    //'acl' => AmazonS3::ACL_PUBLIC, //image displayed
    //'acl' => AmazonS3::ACL_OPEN, //image displayed, grantee everyone has open permission
    //'acl' => AmazonS3::ACL_AUTH_READ, //image not displayed, grantee auth users has open permissions
    //'acl' => AmazonS3::ACL_OWNER_READ, //image not displayed, grantee only ryan
    //'acl' => AmazonS3::ACL_OWNER_FULL_CONTROL, //image not displayed, grantee only ryan
    'storage' => AmazonS3::STORAGE_REDUCED
    )
    );
Run Code Online (Sandbox Code Playgroud)

在我复制所有内容之前,我创建了一个简单的表单来测试上传和显示图像.如果我使用ACL_PRIVATE上传图像,我可以获取公共网址,但我无法访问,或者我可以使用临时密钥获取公共网址并显示图像.

<?php
//display the image link
$temp_link = $s3->get_object_url($bucket, …
Run Code Online (Sandbox Code Playgroud)

php intranet image amazon-s3 amazon-web-services

27
推荐指数
2
解决办法
2万
查看次数

为什么php rename()会破坏我的文件?

我正在使用plupload将多个文件上传到我的服务器.使用它,有一个参数'url:'upload.php'.upload.php会在收到文件时捕获这些文件,如果文件被分块,可能会重新组合它们.收到完整文件后,它会将响应发送回原始页面,并显示绿色复选框图标.

我已经在这个页面上添加了一些代码,在操作我上传的照片的所有主要代码之后.我的计划是创建我的全尺寸图像的三个副本,lg,med和small.我得到了这部分工作,但后来决定首先重命名原始文件以匹配我的命名方案.

我现在得到一个损坏的重命名文件,因此我的三个较小的图像也被破坏了.

//get the original file info
$filepath = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
$filepathinfo = pathinfo($filepath.$fileName);//fileName is used previously in the file

//rename original file to a unique name
$finding_id = 'xyz';
$file_name_new = uniqid($client_id . '-' . $finding_id . '-', true); //doesn't include extension
//rename($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);
//copy($filepath.$fileName, $filepath.$file_name_new.'.'.$ext);
Run Code Online (Sandbox Code Playgroud)

按原样,我得到我的一个文件,或者我上传了多少文件,字节大小完全匹配原始文件,名称保持不变(删除某些字符除外).

如果我只取消注释重命名功能,我实际上得到两个文件.字节大小是原始照片的总和.较大的文件显示底部有一段灰色.较小的文件根本不显示.

如果我只取消注释复制功能,我会获得原始文件,原始文件和另一个文件的精确重命名副本,其大小和损坏与执行重命名的较大文件相同.

有任何想法吗?似乎它应该非常简单.

php rename plupload

7
推荐指数
1
解决办法
1016
查看次数

确定是否选择了其他&lt;option&gt;,或者是否提交了默认值“ Select one ...”(带有空白值)

我在搜索页面上添加了一个“按选项排序”。我正在使用两种选择形式输入类型,一种用于订购字段,一种用于ASC / DESC。我有第一个选项,值=“”和文本“ Select one ...”。

<label for="sort[order_by_field]">Field</label><select name="sort[order_by_field]" id="combobox">
    <option value="">Select one...</option>
    <optgroup label="---">
        <option value="finding_incident_number"<?php echo ($field == 'finding_incident_number' ? ' selected="selected"': false); ?>>Incident #</option>
        <option value="finding_violation_type"<?php echo ($field == 'finding_violation_type' ? ' selected="selected"': false); ?>>Finding</option>

<label for="sort[order_by_direction]">Direction</label>
    <select name="sort[order_by_direction]">
    <option>Select one...</option>
    <option value="ASC"<?php echo ($dir == 'ASC' ? ' selected="selected"': false); ?>>Ascending</option>
    <option value="DESC"<?php echo ($dir == 'DESC' ? ' selected="selected"': false); ?>>Descending</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

提交表单后,我检查是否isset($ _ POST ['sort'])。设置好了。我也检查!empty。它总是空的。我想知道用户是否实际进行了选择。有没有一种方法可以进行设置,这样我就不必检查单个数组的值,即isset($ _ POST ['sort'] ['order_by_field'])?我希望将来可以按字段动态添加/删除可移动数量。

我想我可以使用optiongrp标签,但是那不是语义标记吗?我想虽然可以。

从更广泛的角度来看,将“选择一个...”放置在表单下拉列表中是一种好习惯吗?

php forms isset option

3
推荐指数
1
解决办法
5007
查看次数