Skip to Content
Mastering Shiny
book

Mastering Shiny

by Hadley Wickham
April 2021
Beginner to intermediate
372 pages
7h 58m
English
O'Reilly Media, Inc.
Content preview from Mastering Shiny

Chapter 9. Uploads and Downloads

Transferring files to and from the user is a common feature of apps. You can use it to upload data for analysis or download the results as a dataset or as a report. This chapter shows the UI and server components that you’ll need to transfer files in and out of your app. We begin by loading shiny:

library(shiny)

Upload

We’ll start by discussing file uploads, showing you the basic UI and server components, and then showing how they fit together in a simple app.

UI

The UI needed to support file uploads is simple: just add fileInput() to your UI:

ui <- fluidPage(
  fileInput("upload", "Upload a file")
)

Like most other UI components, there are only two required arguments: id and label. The width, buttonLabel, and placeholder arguments allow you to tweak the appearance in other ways. I won’t discuss them here, but you can read more about them in ?fileInput.

Server

Handling fileInput() on the server is a little more complicated than other inputs. Most inputs return simple vectors, but fileInput() returns a data frame with four columns:

name

The original filename on the user’s computer.

size

The file size, in bytes. By default, the user can only upload files up to 5 MB. You can increase this limit by setting the shiny.maxRequestSize option prior to starting Shiny—to allow up to 10 MB run options(shiny.maxRequestSize = 10 * 1024^2), for example.

type

The “MIME type” of the file.1 This is a formal specification of the file type that is usually ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Introduction to Shiny

Introduction to Shiny

Garrett Grolemund
Learning Shiny

Learning Shiny

Hernan Resnizky
Shiny R

Shiny R

Jared P. Lander

Publisher Resources

ISBN: 9781492047377Errata Page