Heim > Backend-Entwicklung > PHP-Tutorial > phpnegap文件上传

phpnegap文件上传

WBOY
Freigeben: 2016-06-13 10:38:34
Original
1094 Leute haben es durchsucht

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";
Nach dem Login kopieren

?

前端的完整版可以参考: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";    }}?>
Nach dem Login kopieren

?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);        }
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage