phpnegap文件上传

WBOY
Release: 2016-06-13 10:38:34
Original
1080 people have browsed it

phonegap文件上传(Java,PHP)

phpnegap文件上传

phonegap中的FileTransfer对象介绍:

http://docs.phonegap.com/en/1.6.1/cordova_file_file.md.html#FileTransfer

?

今天的代码为同学所整理。在此记下来,供以后参考

?

FileTransfer?is an object that allows you to upload files to a server or download files from a server.

?

用于传文件到服务器端

?

它里面有示例,写得已经是非常的详细,其中有一段:

var options = new FileUploadOptions();options.fileKey="file";options.fileName=fileURI.substr(fileURI.lastIndexOf('/')+1);options.mimeType="text/plain";
Copy after login

?

前端的完整版可以参考:http://www.oschina.net/question/200138_34919

?

今天在做图片上传的时候,怎整也无法在后端获取文件流,其中的Java逻辑如下:

int MAX_SIZE = 102400 * 102400;			DataInputStream in = null;			FileOutputStream fileOut = null;			String contentType = request.getContentType();			try {				if (contentType.indexOf("multipart/form-data") >= 0) {					in = new DataInputStream(request.getInputStream());					int formDataLength = request.getContentLength();					if (formDataLength > MAX_SIZE) {						return;					}					byte dataBytes[] = new byte[formDataLength];					int byteRead = 0;					int totalBytesRead = 0;					while (totalBytesRead <p>?后来才发现,原来是少了一个致命的参数:options.chunkedMode = false;</p><p>?</p><p>关于chunkedMode的解析,请看:http://www.issociate.de/board/post/368589/How_to_force_the_apache_transfer_the_data_in_chunked_mode?.html</p><p>?</p><p>大意是:如果文件长度无法预知时,使用chuckedMode模式传输,现在传输的是图片,大小已经知道,不知道为何apache服务器处理不过来,一定要将chunkedMode设成false,至此上传成功,感觉同学指点</p><p>?</p><p>为了这个参数,我还对比了php版本的文件上传:php的server端这样写的:</p><pre name="code" class="php"><?php // Directory where uploaded images are saved$dirname = "/tmp/phonegap/uploads"; // If uploading fileif ($_FILES) {    print_r($_FILES);    mkdir ($dirname, 0777, true);     move_uploaded_file($_FILES["file"]["tmp_name"],$dirname."/".$_FILES["file"]["name"]);}<span style="color: #ff0000;">// If retrieving an imageelse if (isset($_GET['image'])) {    $file = $dirname."/".$_GET['image'];    // Specify as jpeg    header('Content-type: image/jpeg');      // Resize image for mobile    list($width, $height) = getimagesize($file);     $newWidth = 120.0;     $size = $newWidth / $width;    $newHeight = $height * $size;     $resizedImage = imagecreatetruecolor($newWidth, $newHeight);     $image = imagecreatefromjpeg($file);     imagecopyresampled($resizedImage, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);     imagejpeg($resizedImage, null, 80); }// If displaying imageselse {    $baseURI = "http://".$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'];    $images = scandir($dirname);    $ignore = Array(".", "..");    if ($images) {        foreach($images as $curimg){             if (!in_array($curimg, $ignore)) {                echo "Image: ".$curimg."<br>";                echo "<img  src="%22.%24baseURI.%22?image=%22.%24curimg.%22&rnd=%22.uniqid().%22" alt="phpnegap文件上传" ><br>";             }        }    }    else {        echo "No images on server";    }}?>
Copy after login

?php的代码参考:https://github.com/brycecurtis/articles/tree/master/CameraUpload

?

代码说明及解说在:https://www.ibm.com/developerworks/mydeveloperworks/blogs/94e7fded-7162-445e-8ceb-97a2140866a9/entry/upload_a_picture_using_phonegap_on_android8?lang=en

?

php版本的这个前端代码:

// Verify server has been entered        server = document.getElementById('serverUrl').value;        if (server) {        	            // Specify transfer options            var options = new FileUploadOptions();            options.fileKey="file";            options.fileName=imageURI.substr(imageURI.lastIndexOf('/')+1);            options.mimeType="image/jpeg";            <span   style="max-width:90%">options.chunkedMode = false;</span>            // Transfer picture to server            var ft = new FileTransfer();            ft.upload(imageURI, server, function(r) {                document.getElementById('camera_status').innerHTML = "Upload successful: "+r.bytesSent+" bytes uploaded.";            	            }, function(error) {                document.getElementById('camera_status').innerHTML = "Upload failed: Code = "+error.code;            	            }, options);        }
Copy after login

?确实是含有chunkedMode=false的设置,并在本机运行通过。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template