我現在正在使用這個離子本地插件:Camera,它可以給我圖像文件URI(例如,iOS上的assets-library://
或Android上的content://
)。但我不知道如何將這個文件上傳到我的服務器。我應該使用一個正常的HTML表格與<input type="file">
?如何使用ionic2應用程序將文件上傳到服務器?
0
A
回答
1
請安裝FilePath插件以獲取本機路徑。然後使用下面的代碼。例如說你正在選擇一個圖像文件。
nativepath: any;
uploadfn(){
this.fileChooser.open().then((url) => {
(<any>window).FilePath.resolveNativePath(url, (result) => {
this.nativepath = result;
this.readimage();
}
)
})
}
readimage() {
(<any>window).resolveLocalFileSystemURL(this.nativepath, (res) => {
res.file((resFile) => {
var reader = new FileReader();
reader.readAsArrayBuffer(resFile);
reader.onloadend = (evt: any) => {
var imgBlob = new Blob([evt.target.result], { type: 'image/jpeg'});
//do what you want to do with the file
}
})
})
}
請在這裏看一看 - http://tphangout.com/ionic-2-serving-images-with-firebase-storage/
(涉及如何選擇從手機的文件系統的圖像,並把它上傳到火力存儲)
希望這有助於你。謝謝。
1
根據您的後端類型,有各種解決方案。如果您使用NoSQL,您可以使用base64格式傳輸和存儲圖像。
E.g.
import {
BarcodeScanner,
File,
ImagePicker,
ImagePickerOptions,
ImageResizer,
ImageResizerOptions
} from 'ionic-native';
import filenameRegex from 'filename-regex';
import dirnameRegex from 'dirname-regex';
export interface ImageBlob {
name: string;
blob: string;
}
export function pickImage(options: ImagePickerOptions = {}): Promise<ImageBlob> {
interface ImagePath {
name: string;
dir: string;
path: string;
};
const imagePickerOptions : ImagePickerOptions =
options == null ? { maximumImagesCount: 1 } as ImagePickerOptions : options;
function extractSingleImage(images: string | Array<string>): Promise<ImagePath> {
return new Promise((resolve, reject) => {
let imagePath: string = images instanceof Array ? images[0] : images;
let filename: string = imagePath.match(filenameRegex())[0];
let dirname: string = imagePath.match(dirnameRegex())[1];
if (filename == null || dirname == null) {
reject(new ReferenceError('Invalid image\'s path'));
} else {
resolve({
name: filename,
dir: dirname,
path: imagePath
});
}
});
}
function resizePicture(
image: ImagePath,
resizerOptions?: ImageResizerOptions
): Promise<any> {
const options: ImageResizerOptions = resizerOptions || {
uri: image.path,
folderName: 'pictures',
width: 1024,
height: 1024,
quality: 90
};
return ImageResizer
.resize(options)
.catch(err => console.error("Cannot resize", err));
}
function readAsDataUrl(image: ImagePath): Promise<ImageBlob> {
return File
.readAsDataURL(image.dir, image.name)
.then(blob => ({ blob, name: image.name }))
.catch(err => console.error("Cannot read file as data-url", err));
}
return ImagePicker
.getPictures(imagePickerOptions)
.then(extractSingleImage)
.then(resizePicture)
.then(extractSingleImage)
.then(readAsDataUrl);
}
注意,以上代碼爲[email protected]
和[email protected]
。所以最新的離子已經改變了API。
相關問題
- 1. 如何從iphone應用程序上傳文件到服務器?
- 2. 將文件從Web應用程序上傳到Sharepoint服務器
- 3. 如何將文件從VC++ 6的應用程序上傳到Web服務器?
- 4. 如何將Android應用程序中的文件上傳到Tomcat 6服務器
- 5. 將文件上傳到遠程服務器,我應該如何?
- 6. 從iOS應用程序上傳文件到服務器
- 7. 在android應用程序上傳文件到FTP服務器
- 8. 如何使用ios應用程序將圖像上傳到Node.JS服務器
- 9. 如何使用servlet將文件上傳到服務器?
- 10. 如何使用phpseclib將文件夾上傳到服務器?
- 11. 如何使用phonegap將mp3文件上傳到服務器(xxampp)。
- 12. 如何使用Python將文件上傳到PHP服務器?
- 13. 如何使用python將文件上傳到tftp服務器?
- 14. 如何將文件上傳到服務器硬盤。使用mvc
- 15. 如何使用curl將文件上傳到Milton WebDAV服務器?
- 16. 如何使用FormData將文件上傳到服務器?
- 17. 如何使用Yesod將文件上傳到服務器
- 18. 如何使用smarty將文件上傳到服務器?
- 19. 如何使用rails將文件上傳到服務器?
- 20. 使用Android服務將xml文件上傳到服務器
- 21. 使用php curl將zip文件上傳到遠程服務器
- 22. 使用PHP將多個文件上傳到遠程服務器?
- 23. 使用ajax將文件上傳到遠程服務器
- 24. 使用WCF將文件上傳到遠程服務器
- 25. 使用curl將URL文件上傳到遠程服務器
- 26. 使用ASP.Net(VB)將文件上傳到遠程服務器1.1
- 27. 如何使用camel http compponent將文件上傳到在apache tomcat服務器上運行的應用程序?
- 28. 使用PHP將文件從遠程服務器上傳到FTP服務器
- 29. 使用html服務將文件上傳到谷歌應用程序腳本
- 30. 從應用程序使用目標文件上傳到服務器c