JavaScript
<script>
window.onload = function (){
$("#btn").click(function(){
$('#upload').click(); //通过按钮触发input file的click事件
});
$('#upload').change(function(){
uploadPic();
});
};
function uploadPic(){
var pic = $('#upload')[0].files[0];
var fd = new FormData();
fd.append('upfile', pic);
$.ajax({
type: 'POST',
url: 'upcode.php',
data: fd,
cache: false,
contentType: false,
processData: false,
success:function(data){
alert(data);
return;
}
})
}
</script>
HTML
<button style="height: 36px" id="btn">选择文件</button>
<input type="file" name="upload" id="upload" style="display: none;" />
upcode.php
$file = $_FILES["upfile"];
$file = $file['tmp_name'];
$src = upload_curl_pic($file);
echo $src;
function upload_curl_pic($file){
$file = realpath($file); //要上传的文件
$fields['upfile'] = '@'.$file; // 前面加@符表示上传图片
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,'http://upload.xxx.com/upload.php');
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$content = curl_exec($ch);
echo $content;
}
upload.php
print_r($_FILES['upfile']);
exit;
此页面接收即可。
注意:php只能解析所在服务器的本机文件地址,所以直接传送文件地址是错误的。需要在第一页的JavaScript的里面传送文件流,然后在第二页使用curl传送临时文件到远程地址,由远程地址接收。因为upcode.php并未保存文件,传送的是临时文件,所以在upload.php中是无法识别文件类型的,所以所有判断需要在upcode里进行判断后再进行传输。