我有一个简单的html代码,它在我的服务器上点击我的php文件并上传文件。我需要在ionic中使用相同的东西,但它不起作用。以下是我的home.html
代码
<form action="http://example.com/del/uploadtest/upload3.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
我尝试了离子file chooser,file transfer
,但我未能实现它。我也尝试了valor's ng upload
,它可以工作,但它只允许从设备发送图片,而从浏览器它允许各种文件。
我想将任何类型的文件从安卓上传到服务器。
我无法理解文件选择器,文件传输代码,也无法找到现成的代码。
参考文档,首先..安装文件传输和文件插件。
$ ionic cordova plugin add cordova-plugin-file-transfer
$ npm install --save @ionic-native/file-transfer
和
$ ionic cordova plugin add cordova-plugin-file
$ npm install --save @ionic-native/file
对于上传方法,请说它在主页上
首页.html
<input (click)="uploadFile()" type="submit" value="Upload Image" name="submit">
首页
uploadFile() {
const fileTransfer: FileTransferObject = this.transfer.create();
let options: FileUploadOptions = {
fileKey: 'ionicfile',
fileName: 'ionicfile',
chunkedMode: false,
mimeType: "image/jpeg",
headers: {}
}
fileTransfer.upload('<file path>', '<api endpoint>', options)
.then((data) => {
console.log(data + "Uploaded Successfully");
}, (err) => {
console.log(err);
});
}
注意:
<api endpoint>
是接收文件的服务器的 URL,由 encodeURI(( 编码。
<file path>
是表示设备上的文件或数据 URI 的文件系统 URL。为了向后兼容,这也可以是设备上文件的完整路径。
在您的情况下,您的<api endpoint>
是http://example.com/del/uploadtest/upload3.php
<file path>
是http://192.168.0.7:8080/static/images/ionicfile.jpg
希望这会有所帮助!
这是适合我的脚本!无需使用任何插件您可以上传pdf,zip图像或任何文件格式,无需为Android和ios使用不同的插件在网页中
<input type="file" name="file" (change)="upload($event)" />
在 TS 文件中
upload(str:any)
{
const formData = new FormData();
this.image=str.target.files[0];
formData.append('files[]', this.image);
console.log(formData,this.image);
this.http.post("http://localhost/test/test.php",formData)
.subscribe((data:any)=>{
console.log(data);
})
console.log(str);
}
这里的奖励是PHP文件:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['files'])) {
$errors = [];
$path = 'uploads/';
$extensions = ['jpg', 'jpeg', 'png', 'gif'];
$all_files = count($_FILES['files']['tmp_name']);
$file_tmp = $_FILES['files']['tmp_name'][0];
$file_type = $_FILES['files']['type'][0];
$file_size = $_FILES['files']['size'][0];
$file_ext = strtolower(end(explode('.', $_FILES['files']['name'][0])));
$file_name = uniqid().".".$file_ext;
$file = $path . $file_name;
if (empty($errors)) {
move_uploaded_file($file_tmp, $file);
}
if ($errors) print_r($errors);
}
}